Viktomirova

ForceBook

Feb 7th, 2022
786
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.88 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace ForceBook
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             Dictionary<string, List<string>> membersBySide = new Dictionary<string, List<string>>();
  12.  
  13.             Dictionary<string, string> members = new Dictionary<string, string>();
  14.  
  15.             while (true)
  16.             {
  17.                 string line = Console.ReadLine();
  18.  
  19.                 if (line == "Lumpawaroo")
  20.                 {
  21.                     break;
  22.                 }
  23.  
  24.                 if (line.Contains(" | "))
  25.                 {
  26.                     string[] parts = line.Split(" | ");
  27.  
  28.                     string forceSide = parts[0];
  29.                     string forceUser = parts[1];
  30.  
  31.                     if (members.ContainsKey(forceUser))
  32.                     {
  33.                         continue;
  34.                     }
  35.  
  36.                     if (!membersBySide.ContainsKey(forceSide))
  37.                     {
  38.                         membersBySide.Add(forceSide, new List<string>());
  39.                     }
  40.  
  41.                     membersBySide[forceSide].Add(forceUser);
  42.                     members.Add(forceUser, forceSide);
  43.                 }
  44.                 else
  45.                 {
  46.                     string[] parts = line.Split(" -> ");
  47.  
  48.                     string forceUser = parts[0];
  49.                     string forceSide = parts[1];
  50.  
  51.                     if (!membersBySide.ContainsKey(forceSide))
  52.                     {
  53.                         membersBySide.Add(forceSide, new List<string>());
  54.                     }
  55.  
  56.                     if (members.ContainsKey(forceUser))
  57.                     {
  58.                         string oldSide = members[forceUser];
  59.                         membersBySide[oldSide].Remove(forceUser);
  60.                         membersBySide[forceSide].Add(forceUser);
  61.                         members[forceUser] = forceSide;
  62.                     }
  63.                     else
  64.                     {
  65.                         membersBySide[forceSide].Add(forceUser);
  66.                         members.Add(forceUser, forceSide);
  67.  
  68.                     }
  69.  
  70.                     Console.WriteLine($"{forceUser} joins the {forceSide} side!");
  71.                 }
  72.             }
  73.  
  74.             Dictionary<string, List<string>> result = membersBySide
  75.                 .Where(s => s.Value.Count > 0)
  76.                 .OrderByDescending(s => s.Value.Count)
  77.                 .ThenBy(s => s.Key)
  78.                 .ToDictionary(x => x.Key, x => x.Value);
  79.             foreach (var kvp in result)
  80.             {
  81.                 Console.WriteLine($"Side: {kvp.Key}, Members: {kvp.Value.Count}");
  82.  
  83.                 kvp.Value.Sort();
  84.  
  85.                 foreach (var member in kvp.Value)
  86.                 {
  87.                     Console.WriteLine($"! {member}");
  88.                 }
  89.             }
  90.         }
  91.     }
  92. }
  93.  
Advertisement
Add Comment
Please, Sign In to add comment