Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace TeamworkProjects
- {
- class Team
- {
- public Team(string name, string creator)
- {
- this.Name = name;
- this.Creator = creator;
- this.Members = new List<string>();
- }
- public string Name { get; set; }
- public string Creator { get; set; }
- public List<string> Members { get; set; }
- }
- class Program
- {
- public static void Main()
- {
- List<Team> teams = new List<Team>();
- int n = int.Parse(Console.ReadLine());
- for (int i = 0; i < n; i++)
- {
- string[] info = Console.ReadLine()
- .Split("-", StringSplitOptions.RemoveEmptyEntries)
- .ToArray();
- string creator = info[0];
- string teamName = info[1];
- if (IndexTeam(teams, teamName) != -1)
- {
- Console.WriteLine($"Team {teamName} was already created!");
- }
- else
- {
- if (IndexCreator(teams, creator) != -1)
- {
- Console.WriteLine($"{creator} cannot create another team!");
- }
- else
- {
- teams.Add(new Team(teamName, creator));
- Console.WriteLine($"Team {teamName} has been created by {creator}!");
- }
- }
- }
- string command;
- while ((command = Console.ReadLine()) != "end of assignment")
- {
- string[] info = command.Split("->").ToArray();
- string member = info[0];
- string team = info[1];
- if (IndexTeam(teams, team) == -1)
- {
- Console.WriteLine($"Team {team} does not exist!");
- }
- else
- {
- if (IndexMember(teams, member) >= 0 || IndexCreator(teams, member) >= 0)
- {
- Console.WriteLine($"Member {member} cannot join team {team}!");
- }
- else
- {
- teams[IndexTeam(teams, team)].Members.Add(member);
- }
- }
- }
- var teamWithMembers = teams
- .OrderByDescending(x => x.Members.Count)
- .ThenBy(x => x.Name)
- .Where(x => x.Members.Count > 0);
- var disbandTeams = teams
- .OrderBy(x => x.Name)
- .Where(x => x.Members.Count == 0);
- foreach (var t in teamWithMembers)
- {
- Console.WriteLine($"{t.Name}\n- {t.Creator}");
- foreach (var m in t.Members.OrderBy(x => x))
- {
- Console.WriteLine($"-- {m}");
- }
- }
- Console.WriteLine("Teams to disband:");
- foreach (var t in disbandTeams)
- {
- Console.WriteLine(t.Name);
- }
- }
- public static int IndexTeam(List<Team> teams, string team)
- {
- return teams.FindIndex(t => t.Name == team);
- }
- public static int IndexCreator(List<Team> teams, string creator)
- {
- return teams.FindIndex(t => t.Creator == creator);
- }
- public static int IndexMember(List<Team> teams, string member)
- {
- return teams.FindIndex(t => t.Members.Contains(member));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement