Advertisement
Guest User

Untitled

a guest
Nov 1st, 2017
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.30 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Text.RegularExpressions;
  6. using System.Threading.Tasks;
  7.  
  8. namespace _04.Roli_The_Coder
  9. {  
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             string splitter = @"\s+";
  15.             string eventDataStr = Console.ReadLine();
  16.             Dictionary<int, string> ids = new Dictionary<int, string>();
  17.             Dictionary<string, HashSet<string>> people = new Dictionary<string, HashSet<string>>();
  18.  
  19.             while (eventDataStr != "Time for Code")
  20.             {
  21.                 string[] eventData = Regex.Split(eventDataStr, splitter);
  22.                 int Id = int.Parse(eventData[0]);
  23.                 string eventName = string.Empty;
  24.                 string participantPattern = @"^@[A-Za-z0-9'*\-*A-Za-z0-9]+$";
  25.                 List<string> participants = new List<string>();
  26.                 for (int i = 2; i < eventData.Length; i++)
  27.                 {
  28.                     var match = Regex.Match(eventData[i], participantPattern);
  29.                     if (match.Success)
  30.                     {
  31.                         participants.Add(match.ToString());
  32.                     }
  33.                 }
  34.                 if (eventData[1].StartsWith("#"))
  35.                 {
  36.                     eventName = string.Join("", eventData[1].Skip(1));
  37.                     if (!ids.ContainsKey(Id))
  38.                     {
  39.                         ids.Add(Id, eventName);
  40.                         people.Add(eventName, new HashSet<string>());
  41.                         people[eventName].UnionWith(participants);
  42.                     }
  43.                     else if(ids.ContainsValue(eventName))
  44.                     {
  45.                         people[eventName].UnionWith(participants);
  46.                     }
  47.                    
  48.                 }                
  49.                 eventDataStr = Console.ReadLine();
  50.             }
  51.             foreach (var item in people.OrderByDescending(k => k.Value.Count).ThenBy(x => x.Key))
  52.             {
  53.                 Console.WriteLine($"{item.Key} - {item.Value.Count}");
  54.                 foreach (var list in item.Value.OrderBy(x => x))
  55.                 {
  56.                     Console.WriteLine(list);
  57.                 }
  58.             }
  59.         }        
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement