Advertisement
Guest User

Untitled

a guest
Jan 26th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.94 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement