Advertisement
Spocoman

05. Teamwork Projects

Apr 4th, 2023 (edited)
535
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.71 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace TeamworkProjects
  6. {
  7.     class Team
  8.     {
  9.         public Team(string name, string creator)
  10.         {
  11.             this.Name = name;
  12.             this.Creator = creator;
  13.             this.Members = new List<string>();
  14.         }
  15.  
  16.         public string Name { get; set; }
  17.         public string Creator { get; set; }
  18.         public List<string> Members { get; set; }
  19.     }
  20.  
  21.     class Program
  22.     {
  23.         public static void Main()
  24.         {
  25.             List<Team> teams = new List<Team>();
  26.             int n = int.Parse(Console.ReadLine());
  27.  
  28.             for (int i = 0; i < n; i++)
  29.             {
  30.                 string[] info = Console.ReadLine()
  31.                     .Split("-", StringSplitOptions.RemoveEmptyEntries)
  32.                     .ToArray();
  33.  
  34.                 string creator = info[0];
  35.                 string teamName = info[1];
  36.  
  37.                 if (IndexTeam(teams, teamName) != -1)
  38.                 {
  39.                     Console.WriteLine($"Team {teamName} was already created!");
  40.                 }
  41.                 else
  42.                 {
  43.                     if (IndexCreator(teams, creator) != -1)
  44.                     {
  45.                         Console.WriteLine($"{creator} cannot create another team!");
  46.                     }
  47.                     else
  48.                     {
  49.                         teams.Add(new Team(teamName, creator));
  50.                         Console.WriteLine($"Team {teamName} has been created by {creator}!");
  51.                     }
  52.                 }
  53.             }
  54.  
  55.             string command;
  56.  
  57.             while ((command = Console.ReadLine()) != "end of assignment")
  58.             {
  59.                 string[] info = command.Split("->").ToArray();
  60.  
  61.                 string member = info[0];
  62.                 string team = info[1];
  63.  
  64.                 if (IndexTeam(teams, team) == -1)
  65.                 {
  66.                     Console.WriteLine($"Team {team} does not exist!");
  67.                 }
  68.                 else
  69.                 {
  70.                     if (IndexMember(teams, member) >= 0 || IndexCreator(teams, member) >= 0)
  71.                     {
  72.                         Console.WriteLine($"Member {member} cannot join team {team}!");
  73.                     }
  74.                     else
  75.                     {
  76.                         teams[IndexTeam(teams, team)].Members.Add(member);
  77.                     }
  78.                 }
  79.             }
  80.  
  81.             var teamWithMembers = teams
  82.                 .OrderByDescending(x => x.Members.Count)
  83.                 .ThenBy(x => x.Name)
  84.                 .Where(x => x.Members.Count > 0);
  85.  
  86.             var disbandTeams = teams
  87.                 .OrderBy(x => x.Name)
  88.                 .Where(x => x.Members.Count == 0);
  89.  
  90.             foreach (var t in teamWithMembers)
  91.             {
  92.                 Console.WriteLine($"{t.Name}\n- {t.Creator}");
  93.                 foreach (var m in t.Members.OrderBy(x => x))
  94.                 {
  95.                     Console.WriteLine($"-- {m}");
  96.                 }
  97.             }
  98.  
  99.             Console.WriteLine("Teams to disband:");
  100.  
  101.             foreach (var t in disbandTeams)
  102.             {
  103.                 Console.WriteLine(t.Name);
  104.             }
  105.  
  106.         }
  107.  
  108.         public static int IndexTeam(List<Team> teams, string team)
  109.         {
  110.             return teams.FindIndex(t => t.Name == team);
  111.         }
  112.  
  113.         public static int IndexCreator(List<Team> teams, string creator)
  114.         {
  115.             return teams.FindIndex(t => t.Creator == creator);
  116.         }
  117.  
  118.         public static int IndexMember(List<Team> teams, string member)
  119.         {
  120.             return teams.FindIndex(t => t.Members.Contains(member));
  121.         }
  122.     }
  123. }
  124.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement