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;
- class TeamworkProjects
- {
- static void Main()
- {
- int teamsCount = int.Parse(Console.ReadLine());
- List<Team> teams = Team.CreateTeams(teamsCount);
- Team.AddMembersToTeams(teams);
- List<Team> teamsToDisband = new List<Team>();
- Team.PrintTeams(teams, teamsToDisband);
- }
- }
- class Team
- {
- public string Name { get; set; }
- public string Creator { get; set; }
- public List<string> Members { get; set; }
- public static List<Team> CreateTeams(int teamsCount)
- {
- List<Team> teams = new List<Team>();
- for (int i = 0; i < teamsCount; i++)
- {
- string[] teamArgs = Console.ReadLine().Split('-');
- string teamCreator = teamArgs[0];
- string teamName = teamArgs[1];
- if (teams.Any(t => t.Name == teamName))
- {
- Console.WriteLine($"Team {teamName} was already created!");
- }
- else if (teams.Any(t => t.Creator == teamCreator))
- {
- Console.WriteLine($"{teamCreator} cannot create another team!");
- }
- else
- {
- Team currentTeam = new Team();
- currentTeam.Name = teamName;
- currentTeam.Creator = teamCreator;
- currentTeam.Members = new List<string>();
- currentTeam.Members.Add(teamCreator);
- teams.Add(currentTeam);
- Console.WriteLine($"Team {currentTeam.Name} has been created by {currentTeam.Creator}!");
- }
- }
- return teams;
- }
- public static void AddMembersToTeams(List<Team> teams)
- {
- string[] memberArgs = Console.ReadLine().Split(new char[] { '-', '>' }, StringSplitOptions.RemoveEmptyEntries);
- while (!memberArgs.Contains("end of assignment"))
- {
- string memberName = memberArgs[0];
- string memberTeam = memberArgs[1];
- Team currentTeam = new Team();
- if (!teams.Any(t => t.Name == memberTeam))
- {
- Console.WriteLine($"Team {memberTeam} does not exist!");
- }
- else
- {
- bool foundMember = false;
- foreach (var team in teams)
- {
- if (team.Members.Any(m => m == memberName))
- {
- foundMember = true;
- Console.WriteLine($"Member {memberName} cannot join team {team.Name}!");
- break;
- }
- }
- if (!foundMember)
- {
- currentTeam = teams.First(t => t.Name == memberTeam);
- currentTeam.Members.Add(memberName);
- }
- }
- memberArgs = Console.ReadLine().Split(new char[] { '-', '>' }, StringSplitOptions.RemoveEmptyEntries);
- }
- }
- public static void PrintTeams(List<Team> teams, List<Team> teamsToDisband)
- {
- foreach (var team in teams.OrderByDescending(t => t.Members.Count).ThenBy(t => t.Creator))
- {
- //Team currentTeam = team;
- team.Members.RemoveAt(0);
- if (team.Members.Count == 0)
- {
- teamsToDisband.Add(team);
- continue;
- }
- Console.WriteLine($"{team.Name}");
- Console.WriteLine($"- {team.Creator}");
- foreach (var member in team.Members.OrderBy(n => n))
- {
- Console.WriteLine($"-- {member}");
- }
- }
- //print dissolute teams
- Console.WriteLine("Teams to disband:");
- foreach (var team in teamsToDisband.OrderBy(t => t.Name))
- {
- Console.WriteLine($"{team.Name}");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement