SHARE
TWEET

Untitled

a guest Jan 26th, 2019 116 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. namespace _08._Ranking
  2. {
  3.     using System;
  4.     using System.Collections.Generic;
  5.     using System.Linq;
  6.  
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             Dictionary<string, string> contestInfo = new Dictionary<string, string>();
  12.             SortedDictionary<string, Dictionary<string, int>> userInfo = new SortedDictionary<string, Dictionary<string, int>>();
  13.  
  14.             string inputLine = Console.ReadLine();
  15.  
  16.             while (inputLine != "end of contests")
  17.             {
  18.                 string[] contestProps = inputLine
  19.                     .Split(":", StringSplitOptions.RemoveEmptyEntries);
  20.                 string contest = contestProps[0];
  21.                 string password = contestProps[1];
  22.  
  23.                 if (contestInfo.ContainsKey(contest) == false)
  24.                 {
  25.                     contestInfo.Add(contest, password);
  26.                 }
  27.                 inputLine = Console.ReadLine();
  28.             }
  29.  
  30.             inputLine = Console.ReadLine();
  31.  
  32.             while (inputLine != "end of submissions")
  33.             {
  34.                 string[] tokens = inputLine
  35.                     .Split("=>", StringSplitOptions.RemoveEmptyEntries);
  36.                 string contest = tokens[0];
  37.                 string password = tokens[1];
  38.                 string username = tokens[2];
  39.                 int points = int.Parse(tokens[3]);
  40.  
  41.                 if (contestInfo.ContainsKey(contest) && contestInfo[contest] == password)
  42.                 {
  43.                     if (userInfo.ContainsKey(username) == false)
  44.                     {
  45.                         userInfo.Add(username, new Dictionary<string, int>());
  46.                     }
  47.  
  48.                     if (userInfo[username].ContainsKey(contest))
  49.                     {
  50.                         if (userInfo[username][contest] < points)
  51.                         {
  52.                             userInfo[username][contest] = points;
  53.                         }
  54.                     }
  55.                     else
  56.                     {
  57.                         userInfo[username].Add(contest, points);
  58.  
  59.                     }
  60.                 }
  61.                 inputLine = Console.ReadLine();
  62.             }
  63.  
  64.             var bestCandidate = userInfo.OrderByDescending(x => x.Value.Values.Sum()).First();
  65.             int totalPoints = bestCandidate.Value.Values.Sum();
  66.  
  67.             Console.WriteLine($"Best candidate is {bestCandidate.Key} with total {totalPoints} points.");
  68.  
  69.             Console.WriteLine("Ranking:");
  70.  
  71.             foreach (var userKvp in userInfo)
  72.             {
  73.                 Console.WriteLine(userKvp.Key);
  74.  
  75.                 foreach (var contestKvp in userKvp.Value.OrderByDescending(x => x.Value))
  76.                 {
  77.                     Console.WriteLine($"#  {contestKvp.Key} -> {contestKvp.Value}");
  78.                 }
  79.             }
  80.         }
  81.     }
  82. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top