SHARE
TWEET

Untitled

a guest Jan 26th, 2019 108 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace Ranking
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             string input = Console.ReadLine();
  12.  
  13.             Dictionary<string, string> contests = new Dictionary<string, string>();
  14.             Dictionary<string, Dictionary<string, int>> ranking = new Dictionary<string, Dictionary<string, int>>();
  15.  
  16.             while (input != "end of contests")
  17.             {
  18.                 string[] tokens = input.Split(":");
  19.                 string contest = tokens[0];
  20.                 string password = tokens[1];
  21.  
  22.                 if (contests.ContainsKey(contest) == false)
  23.                 {
  24.                     contests.Add(contest, password);
  25.                 }
  26.  
  27.                 input = Console.ReadLine();
  28.             }
  29.  
  30.             string inputLine = Console.ReadLine();
  31.  
  32.             while (inputLine != "end of submissions")
  33.             {
  34.                 string[] tokens = inputLine.Split("=>");
  35.                 string contest = tokens[0];
  36.                 string password = tokens[1];
  37.                 string username = tokens[2];
  38.                 int points = int.Parse(tokens[3]);
  39.  
  40.                 if (contests.ContainsKey(contest) && contests[contest] == password)
  41.                 {
  42.                     if (ranking.ContainsKey(username) == false)
  43.                     {
  44.                         ranking.Add(username, new Dictionary<string, int>());
  45.                         ranking[username].Add(contest, points);
  46.                     }
  47.                     if (ranking[username].ContainsKey(contest) == false)
  48.                     {
  49.                         ranking[username].Add(contest, 0);
  50.                     }
  51.                     if (ranking[username][contest] <= points)
  52.                     {
  53.                         ranking[username][contest] = points;
  54.                     }
  55.                 }
  56.                 inputLine = Console.ReadLine();
  57.             }
  58.             PrintBestCandidate(ranking);
  59.             PrintAllStudents(ranking);
  60.         }
  61.  
  62.         private static void PrintAllStudents(Dictionary<string, Dictionary<string, int>> ranking)
  63.         {
  64.             Console.WriteLine("Ranking:");
  65.  
  66.             foreach (var kvp in ranking.OrderBy(kvp => kvp.Key))
  67.             {
  68.                 Console.WriteLine(kvp.Key);
  69.  
  70.                 foreach (var user in kvp.Value.OrderByDescending(u => u.Value))
  71.                 {
  72.                     Console.WriteLine($"#  {user.Key} -> {user.Value}");
  73.                 }
  74.             }
  75.         }
  76.  
  77.         private static void PrintBestCandidate(Dictionary<string, Dictionary<string, int>> ranking)
  78.         {
  79.             foreach (var kvp in ranking.OrderByDescending(kvp => kvp.Value.Values.Sum()))
  80.             {
  81.                 Console.WriteLine($"Best candidate is {kvp.Key} with total {kvp.Value.Values.Sum()} points.");
  82.                 return;
  83.             }
  84.         }
  85.     }
  86. }
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