Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ForceBook
- {
- class Program
- {
- static void Main(string[] args)
- {
- // Users database
- Dictionary<string, string> forceUsers = new Dictionary<string, string>();
- // Sides members database
- Dictionary<string, int> sidesCount = new Dictionary<string, int>();
- while (true)
- {
- string input = Console.ReadLine();
- if (input == "Lumpawaroo") { break; }
- if (input.Contains(" | "))
- {
- // Process input
- string[] tokens = input.Split("|".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
- string inputSide = tokens[0].Trim();
- string inputUser = tokens[1].Trim();
- // Add non-existing user
- if (forceUsers.ContainsKey(inputUser) == false)
- {
- forceUsers.Add(inputUser, inputSide);
- if (sidesCount.ContainsKey(inputSide) == false)
- {
- sidesCount.Add(inputSide, 0);
- }
- sidesCount[inputSide]++;
- }
- }
- else if (input.Contains("->"))
- {
- string[] tokens = input.Split("->".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
- string inputUser = tokens[0].Trim();
- string inputSide = tokens[1].Trim();
- // Add non-existing user
- if (forceUsers.ContainsKey(inputUser) == false)
- {
- forceUsers.Add(inputUser, inputSide);
- // Add non-existing side
- if (sidesCount.ContainsKey(inputSide) == false)
- {
- sidesCount.Add(inputSide, 0);
- }
- // Increment side members
- sidesCount[inputSide]++;
- }
- // Update existing user's side
- else
- {
- string currentSide = forceUsers[inputUser];
- forceUsers[inputUser] = inputSide;
- // Add non-existing side
- if (sidesCount.ContainsKey(inputSide) == false)
- {
- sidesCount.Add(inputSide, 0);
- }
- // Increment side members
- sidesCount[inputSide]++;
- // Decrement former user's side
- sidesCount[currentSide]--;
- }
- Console.WriteLine($"{inputUser} joins the {inputSide} side!");
- }
- }
- // Sort and print
- sidesCount = sidesCount.OrderByDescending(s => s.Value).ThenBy(s => s.Key).ToDictionary(s => s.Key, s => s.Value);
- foreach (var side in sidesCount)
- {
- if (side.Value > 0)
- {
- Console.WriteLine($"Side: {side.Key}, Members: {side.Value}");
- var sideUsers = forceUsers.Where(u => u.Value == side.Key).OrderBy(u => u.Key);
- foreach (var user in sideUsers)
- {
- Console.WriteLine($"! {user.Key}");
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement