diff --git a/analysis/src/Activity.java b/analysis/src/Activity.java index f12d65f..70a0747 100644 --- a/analysis/src/Activity.java +++ b/analysis/src/Activity.java @@ -139,14 +139,29 @@ private static void draw( } if (printSolveStats) { + System.out.printf("\\providecommand{\\printfirstsolve}[2]{Solved at #2 by \\textbf{#1}}\n"); + System.out.printf("\\providecommand{\\notsolved}{Not solved}\n"); fullModel.getProblemsModel().getProblems().stream().forEach(problem -> { final SubmitStats stats = statsByProblem.get(problem.getId()).crop(); System.out.printf( - "\\newcommand{\\solvestats%s}{\\printsolvestats{%d}{%d}{%d}}\n", + "\\providecommand{\\solvestats%s}{\\printsolvestats{%d}{%d}{%d}}\n", problem.getLabel(), stats.totalAttempts, stats.totalAccepted, stats.totalPending); + if (stats.firstSolveAt != -1) { + System.out.printf( + "% \\providecommand{\\firstsolve%s}{\\printfirstsolve{%s}{%02d:%02d:%02d}}\n", + problem.getLabel(), + stats.firstSolveBy.getName(), + (stats.firstSolveAt / 3600), + (stats.firstSolveAt / 60) % 60, + (stats.firstSolveAt) % 60); + } else { + System.out.printf( + "\\providecommand{\\firstsolve%s}{\\notsolved}\n", + problem.getLabel()); + } }); } diff --git a/analysis/src/SubmitStats.java b/analysis/src/SubmitStats.java index e6d94d6..ce0d04b 100644 --- a/analysis/src/SubmitStats.java +++ b/analysis/src/SubmitStats.java @@ -12,6 +12,9 @@ public class SubmitStats { private static final long SECONDS_PER_BAR = (60 * 5) / 2; private static final long MAX_SUBMISSIONS = 20; + long firstSolveAt = -1; + Team firstSolveBy = null; + int totalAttempts = 0; int totalAccepted = 0; int totalPending = 0; @@ -73,6 +76,10 @@ public SubmitStats add(Submission submission, Judgement judgement, ScoreboardMod if (grouping == accepted) { add(teamsAccepted, team, submission); totalAccepted += 1; + if (firstSolveAt == -1 || submission.getContestTime().getSeconds() < firstSolveAt) { + firstSolveAt = submission.getContestTime().getSeconds(); + firstSolveBy = team; + } } if (grouping == pending) { add(teamsPending, team, submission);