IcpcMonitor.IcpcMonitorUserLine GetOrAddLine(Dictionary <string, IcpcMonitor.IcpcMonitorUserLine> lines, string userDisplayName) { IcpcMonitor.IcpcMonitorUserLine line; if (!lines.TryGetValue(userDisplayName, out line)) { lines[userDisplayName] = line = new IcpcMonitor.IcpcMonitorUserLine { UserDisplayName = userDisplayName, Results = Enumerable.Repeat(0, shortNames.Count).ToList() }; } return(line); }
void UpdateLine(IcpcMonitor.IcpcMonitorUserLine line, Submission submission) { var shortName = submission.Problem.ShortName; var index = shortNames.FindIndex(x => x == shortName); if (line.Results[index] > 0) { return; } if (submission.Result.Verdict == GenericVerdict.Accepted.ToString()) { int attempts = -line.Results[index]; line.AcceptedProblems++; line.Time += (int)(submission.SubmittedAt - contest.Beginning).TotalMinutes; line.Time += 20 * attempts; line.Results[index] = attempts + 1; } else { line.Results[index]--; } }