Advertisement
Guest User

Untitled

a guest
Oct 31st, 2018
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. class Program
  6. {
  7. static void Main()
  8. {
  9. Dictionary<string, string> contestAndPassowrd = new Dictionary<string, string>();
  10. while (true)
  11. {
  12. string[] inputLine = Console.ReadLine().Split(':');
  13. if (inputLine[0] == "end of contests")
  14. {
  15. break;
  16. }
  17. string contest = inputLine[0];
  18. string password = inputLine[1];
  19. contestAndPassowrd[contest] = password;//тука се случва следното ако има такъв контест му се ъпдейтва паролата ако няма се създава!
  20. }
  21. List<Player> players = new List<Player>();
  22. while (true)
  23. {
  24. string[] inputLine = Console.ReadLine().Split(new char[] { '=', '>' }, StringSplitOptions.RemoveEmptyEntries);
  25. if (inputLine[0] == "end of submissions")
  26. {
  27. break;
  28. }
  29. string contest = inputLine[0];
  30. string password = inputLine[1];
  31. string username = inputLine[2];
  32. int points = int.Parse(inputLine[3]);
  33. if (!contestAndPassowrd.ContainsKey(contest))
  34. {
  35. continue;
  36. }
  37. else if (contestAndPassowrd[contest]!=password)
  38. {
  39. continue;
  40. }
  41. //от тука нататък приемаме че паролата и контеста са валидни и нема гръмне нищо.
  42. int indexOfPlayer = players.FindIndex(x => x.Name == username);
  43. if (indexOfPlayer==-1)//няма такъв човек и го правим
  44. {
  45. Player newPlayer = new Player {
  46. Name=username,
  47. ContestPoints=new Dictionary<string, int> { [contest] = points }
  48. };
  49. players.Add(newPlayer);
  50. }
  51. else//има такъв човек
  52. {
  53. if (!players[indexOfPlayer].ContestPoints.ContainsKey(contest))//нема такъв контест
  54. {
  55. players[indexOfPlayer].ContestPoints[contest] = points;//добавяме контест и му задаваме точките
  56. }
  57. else if (players[indexOfPlayer].ContestPoints[contest]<points)//има контест има човек точките ако са по малко ги ъпдейтваме
  58. {
  59. players[indexOfPlayer].ContestPoints[contest] = points;
  60. }
  61. }
  62. }
  63. Player winner = players.OrderByDescending(x=>x.ContestPoints.Values.Sum()).First();
  64. Console.WriteLine("Best candidate is {0} with total {1} points.",winner.Name,winner.ContestPoints.Values.Sum());
  65. Console.WriteLine("Ranking:");
  66. foreach (Player human in players.OrderBy(x=>x.Name))
  67. {
  68. Console.WriteLine(human.Name);
  69. foreach (var kvp in human.ContestPoints.OrderByDescending(x=>x.Value))
  70. {
  71. Console.WriteLine("# "+kvp.Key+" -> "+kvp.Value);
  72. }
  73. }
  74. }
  75. }
  76. class Player
  77. {
  78. public string Name { get; set; }
  79. public Dictionary<string, int> ContestPoints { get; set; }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement