Advertisement
Guest User

forceBook

a guest
Apr 8th, 2019
545
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.36 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4.  
  5. namespace E09._ForceBook
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             var userBySide = new Dictionary<string, string>();
  12.             var sideByUsers = new Dictionary<string, int>();
  13.  
  14.             string input = string.Empty;
  15.             string side = string.Empty;
  16.             string user = string.Empty;
  17.  
  18.             while ((input = Console.ReadLine()) != "Lumpawaroo")
  19.             {
  20.                 if (input.Contains(" | "))
  21.                 {
  22.                     GetAddedDictinaries(userBySide, sideByUsers, input, side, user);
  23.                 }
  24.                 else if (input.Contains(" -> "))
  25.                 {
  26.                     GetDictinaries(userBySide, sideByUsers, input, side, user);                    
  27.                 }
  28.             }
  29.             PrintResult(sideByUsers, userBySide);
  30.         }
  31.  
  32.         private static void GetDictinaries
  33.             (Dictionary<string, string> userBySide, Dictionary<string, int> sideByUsers, string input, string side, string user)
  34.         {
  35.             string[] inputCommand = input.Split(" -> ");
  36.  
  37.             user = inputCommand[0];
  38.             side = inputCommand[1];
  39.  
  40.             if (userBySide.ContainsKey(user) && userBySide[user] != side && sideByUsers.ContainsKey(userBySide[user]))
  41.             {
  42.                 sideByUsers[userBySide[user]]--;
  43.  
  44.                 if (!sideByUsers.ContainsKey(side))
  45.                 {
  46.                     sideByUsers.Add(side, 0);
  47.                 }
  48.                 sideByUsers[side]++;
  49.  
  50.                 userBySide[user] = side;
  51.             }
  52.             else if (!userBySide.ContainsKey(user))
  53.             {
  54.                 if (!sideByUsers.ContainsKey(side))
  55.                 {
  56.                     sideByUsers.Add(side, 0);
  57.                 }
  58.                 sideByUsers[side]++;
  59.                 userBySide[user] = side;
  60.             }
  61.             Console.WriteLine($"{user} joins the {side} side!");
  62.         }
  63.  
  64.         private static void GetAddedDictinaries
  65.             (Dictionary<string, string> userBySide, Dictionary<string, int> sideByUsers, string input, string side, string user)
  66.         {
  67.             string[] inputCommand = input.Split(" | ");
  68.  
  69.             side = inputCommand[0];
  70.             user = inputCommand[1];
  71.  
  72.             if (!userBySide.ContainsKey(user))
  73.             {
  74.                 userBySide.Add(user, side);
  75.  
  76.                 if (!sideByUsers.ContainsKey(side))
  77.                 {
  78.                     sideByUsers.Add(side, 0);
  79.                 }
  80.                 sideByUsers[side]++;
  81.             }
  82.         }
  83.  
  84.         private static void PrintResult(Dictionary<string, int> sideByUsers, Dictionary<string, string> userBySide)
  85.         {
  86.             foreach (var kvp in sideByUsers.OrderByDescending(x => x.Value).ThenBy(y => y.Key))
  87.             {
  88.                 if (kvp.Value > 0)
  89.                 {
  90.                     Console.WriteLine($"Side: {kvp.Key}, Members: {kvp.Value}");
  91.  
  92.                     foreach (var item in userBySide.OrderBy(k => k.Key))
  93.                     {
  94.                         if (item.Value == kvp.Key)
  95.                         {
  96.                             Console.WriteLine($"! {item.Key}");
  97.                         }
  98.                     }
  99.                 }
  100.             }
  101.         }
  102.     }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement