IPetrov007

RoliTheCoder

Apr 17th, 2017
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace RollyTheCoder
  8. {
  9. public class Event
  10. {
  11. public int Id { get; set; }
  12.  
  13. public string Name { get; set; }
  14.  
  15. public SortedSet<string> Participants { get; set;}
  16. }
  17. class Program
  18. {
  19. static void Main(string[] args)
  20. {
  21. var existingIds = new Dictionary<int, string>();
  22. var events = new List<Event>();
  23.  
  24. while (true)
  25. {
  26. var input = Console.ReadLine();
  27. if (input == "Time for Code")
  28. {
  29. break;
  30. }
  31.  
  32. var inputStr = input
  33. .Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
  34. .ToArray();
  35.  
  36. var id = -1;
  37. if (!int.TryParse(inputStr[0], out id))
  38. {
  39. continue;
  40. }
  41.  
  42. var eventName = inputStr[1];
  43. if (!eventName.StartsWith("#"))
  44. {
  45. continue;
  46. }
  47. else
  48. {
  49. eventName = eventName.TrimStart('#');
  50. }
  51. var participants = inputStr
  52. .Skip(2)
  53. .ToList();
  54. if (!participants.All(x => x.StartsWith("@")))
  55. {
  56. continue;
  57. }
  58.  
  59. if (existingIds.ContainsKey(id))
  60. {
  61. if (existingIds[id] != eventName)
  62. {
  63. continue;
  64. }
  65. else
  66. {
  67. foreach (var ev in events)
  68. {
  69. if (ev.Id == id)
  70. {
  71. foreach (var part in participants)
  72. {
  73. ev.Participants.Add(part);
  74. }
  75.  
  76. }
  77. }
  78. }
  79. }
  80. else
  81. {
  82. existingIds.Add(id, eventName);
  83.  
  84. var hashSetParticipans = new SortedSet<string>();
  85. var newEvent = new Event();
  86. newEvent.Id = id;
  87. newEvent.Name = eventName;
  88. foreach (var part in participants)
  89. {
  90. hashSetParticipans.Add(part);
  91. }
  92. newEvent.Participants = hashSetParticipans;
  93. events.Add(newEvent);
  94. }
  95. }
  96. var result = events
  97. .OrderByDescending(p => p.Participants.Count)
  98. .ToList();
  99.  
  100. foreach (var ev in result)
  101. {
  102. Console.WriteLine($"{ev.Name} - {ev.Participants.Count}");
  103.  
  104. foreach (var item in ev.Participants)
  105. {
  106. Console.WriteLine(item);
  107. }
  108. }
  109. }
  110. }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment