debono

Untitled

Oct 25th, 2017
166
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Teamwork_projects
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             int numberOfTeams = int.Parse(Console.ReadLine());
  14.  
  15.             SortedDictionary<string, string> creatorsAndTeams = new SortedDictionary<string, string>();
  16.  
  17.             SortedDictionary<string, List<string>> teamsAndMembers = new SortedDictionary<string, List<string>>();
  18.  
  19.             //start creating teams
  20.             for (int i = 0; i < numberOfTeams; i++)
  21.             {
  22.                 var tokens = Console.ReadLine().Split('-').ToArray();
  23.                 string creatorName = tokens[0];
  24.                 string teamName = tokens[1];
  25.  
  26.                 if (!creatorsAndTeams.ContainsKey(creatorName) && !creatorsAndTeams.ContainsValue(teamName))
  27.                 {
  28.                     creatorsAndTeams.Add(creatorName, teamName);
  29.                     teamsAndMembers.Add(teamName, new List<string>());
  30.                     teamsAndMembers[teamName].Add(creatorName);
  31.                     Console.WriteLine($"Team {teamName} has been created by {creatorName}!");
  32.                 }
  33.                 else if (creatorsAndTeams.ContainsKey(creatorName))
  34.                 {
  35.                     Console.WriteLine($"{creatorName} cannot create another team!");
  36.                 }
  37.  
  38.                 else if (creatorsAndTeams.ContainsValue(teamName))
  39.                 {
  40.                     Console.WriteLine($"Team {teamName} was already created!");
  41.                 }
  42.             }
  43.             //teams have been created!!!
  44.  
  45.             //start assigning members
  46.             while (true)
  47.             {
  48.                 var tokens_2 = Console.ReadLine().Split(new string[] { "->" }, StringSplitOptions.None).ToArray();
  49.                 if (tokens_2[0] == "end of assignment")
  50.                 {
  51.                     break;
  52.                 }
  53.                 string memberName = tokens_2[0];
  54.                 string teamName = tokens_2[1];
  55.  
  56.                 if (!teamsAndMembers.ContainsKey(teamName))
  57.                 {
  58.                     Console.WriteLine($"Team {teamName} does not exist!");
  59.                 }
  60.  
  61.                 else if (creatorsAndTeams.ContainsKey(memberName) || teamsAndMembers.Where(c => c.Value.Contains(memberName)).Any())
  62.                 {
  63.                     Console.WriteLine($"Member {memberName} cannot join team {teamName}!");
  64.                 }
  65.  
  66.                 else if (!teamsAndMembers[teamName].Contains(memberName))
  67.                 {
  68.                     teamsAndMembers[teamName].Add(memberName);
  69.                 }
  70.             }
  71.             //end of assignments loop
  72.  
  73.  
  74.             // start printing output
  75.             foreach (var team in teamsAndMembers)
  76.             {
  77.                 if (team.Value.Count > 1)
  78.                 {
  79.                     Console.WriteLine(team.Key);
  80.                 }
  81.  
  82.                 if (team.Value.Count > 1)
  83.                 {
  84.  
  85.                     for (int i = 0; i < team.Value.Count; i++)
  86.                     {
  87.                         if (i == 0)
  88.                         {
  89.                             Console.WriteLine($"- {team.Value[0]}");
  90.                         }
  91.                         else
  92.                         {
  93.                             Console.WriteLine($"-- {team.Value[i]}");
  94.                         }
  95.                        
  96.                     }
  97.                 }
  98.             }
  99.  
  100.             Console.WriteLine("Teams to disband:");
  101.             foreach (var team in teamsAndMembers)
  102.             {
  103.                 if (team.Value.Count < 2)
  104.                 {
  105.                     Console.WriteLine(team.Key);
  106.                 }
  107.             }
  108.  
  109.             //end of printing output
  110.  
  111.         }
  112.     }
  113. }
RAW Paste Data