Teo_Yanchev

Dictionaries - 02. Judge - C# Fundamentals

Oct 6th, 2020
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.16 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace _02._Judge
  6. {
  7. class Judge
  8. {
  9. static void Main(string[] args)
  10. {
  11. Dictionary<string, Dictionary<string, int>> dict = new Dictionary<string, Dictionary<string, int>>();
  12.  
  13. string input = Console.ReadLine();
  14. while (input != "no more time")
  15. {
  16. string[] currentInput = input.Split(" -> ");
  17. string userName = currentInput[0];
  18. string contest = currentInput[1];
  19. int points = int.Parse(currentInput[2]);
  20.  
  21.  
  22. if (!dict.ContainsKey(contest))
  23. {
  24. dict[contest] = new Dictionary<string, int>();
  25.  
  26. dict[contest].Add(userName, points);
  27. input = Console.ReadLine();
  28. continue;
  29. }
  30. else
  31. {
  32. if (!dict[contest].ContainsKey(userName))
  33. {
  34. dict[contest].Add(userName, points);
  35. }
  36. else if (dict.ContainsKey(contest) && dict[contest][userName] < points)
  37. {
  38. dict[contest][userName] = points;
  39. }
  40.  
  41. }
  42.  
  43.  
  44. input = Console.ReadLine();
  45. }
  46.  
  47. Dictionary<string, int> individualDict = new Dictionary<string, int>();
  48. int count = 0;
  49.  
  50. foreach (var contest in dict)
  51. {
  52. string nameContest = contest.Key;
  53. Dictionary<string, int> users = dict[nameContest];
  54.  
  55. Console.WriteLine($"{nameContest}: {users.Count()} participants");
  56.  
  57. count = 0;
  58.  
  59. users = users
  60. .OrderByDescending(x => x.Value)
  61. .ThenBy(x => x.Key)
  62. .ToDictionary(x => x.Key, x => x.Value);
  63.  
  64. foreach (var user in users)
  65. {
  66. string name = user.Key;
  67. int points = user.Value;
  68.  
  69. if (!individualDict.ContainsKey(name))
  70. {
  71. individualDict[name] = 0;
  72. }
  73.  
  74. individualDict[name] += points;
  75.  
  76. count += 1;
  77. Console.WriteLine($"{count}. {name} <::> {points}");
  78. }
  79. }
  80.  
  81. count = 0;
  82.  
  83. individualDict = individualDict
  84. .OrderByDescending(x => x.Value)
  85. .ThenBy(x => x.Key)
  86. .ToDictionary(x=>x.Key, x=>x.Value);
  87.  
  88. Console.WriteLine("Individual standings: ");
  89.  
  90. foreach (var individual in individualDict)
  91. {
  92. string nameIndividual = individual.Key;
  93. int individualPoints = individual.Value;
  94.  
  95. count += 1;
  96. Console.WriteLine($"{count}. {nameIndividual} -> {individualPoints}");
  97. }
  98.  
  99. }
  100. }
  101. }
  102.  
Advertisement
Add Comment
Please, Sign In to add comment