Example #1
0
 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);
 }
Example #2
0
        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]--;
            }
        }