krasizorbov

Judge

Mar 16th, 2019
1,313
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.82 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4.  
  5. namespace Judge
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             //contest.Key and (username and points).Value
  12.             var contests = new Dictionary<string, Dictionary<string, int>>();
  13.             //username.Key and total sum of points.Value
  14.             var users = new Dictionary<string, int>();
  15.  
  16.             while (true)
  17.             {
  18.                 string[] input = Console.ReadLine().Split(" -> ").ToArray();
  19.  
  20.                 if (input[0] == "no more time")
  21.                 {
  22.                     break;
  23.                 }
  24.  
  25.                 string username = input[0];
  26.                 string contest = input[1];
  27.                 int points = int.Parse(input[2]);
  28.  
  29.                 if (!contests.ContainsKey(contest))
  30.                 {
  31.                     contests.Add(contest, new Dictionary<string, int>());
  32.                     contests[contest][username] = points;
  33.                 }
  34.                 else
  35.                 {
  36.                     if (!contests[contest].ContainsKey(username))
  37.                     {
  38.                         contests[contest][username] = points;
  39.                     }
  40.                     else
  41.                     {
  42.                         if (contests[contest][username] < points)
  43.                         {
  44.                             contests[contest][username] = points;
  45.                         }
  46.                     }
  47.                 }
  48.             }//while loop ends here.
  49.            
  50.             foreach (var contest in contests)
  51.             {
  52.                 Console.WriteLine($"{contest.Key}: {contest.Value.Count()} participants");
  53.                 int counter = 0;
  54.                 foreach (var name in contest.Value.OrderByDescending(x => x.Value).ThenBy(x => x.Key))
  55.                 {
  56.                     counter++;
  57.                     Console.WriteLine($"{counter}. {name.Key} <::> {name.Value}");
  58.                 }
  59.                 counter = 0;
  60.             }
  61.  
  62.             Console.WriteLine("Individual standings:");
  63.  
  64.             foreach (var contest in contests)
  65.             {
  66.                 foreach (var name in contest.Value)
  67.                 {
  68.                     if (!users.ContainsKey(name.Key))
  69.                     {
  70.                         users.Add(name.Key, name.Value);
  71.                     }
  72.                     else
  73.                     {
  74.                         users[name.Key] = users[name.Key] + name.Value;
  75.                     }
  76.                 }
  77.             }
  78.             int counter1 = 0;
  79.             foreach (var name in users.OrderByDescending(x => x.Value).ThenBy(x => x.Key))
  80.             {
  81.                 counter1++;
  82.                 Console.WriteLine($"{counter1}. {name.Key} -> {name.Value}");
  83.             }
  84.         }
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment