desislava_topuzakova

Untitled

Nov 1st, 2021
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.72 KB | None | 0 0
  1.  
  2.  
  3. import java.text.Collator;
  4. import java.util.*;
  5.  
  6. public class Main {
  7. public static void main(String[] args) {
  8. Scanner sc = new Scanner(System.in);
  9.  
  10. Map<String, Team> teamsByName = new HashMap<>();
  11. Set<String> creators = new HashSet<>();
  12. Set<String> overallMembers = new HashSet<>();
  13.  
  14. int teamSize = Integer.parseInt(sc.nextLine());
  15.  
  16. while (teamSize-->0) {
  17. String[] creatorAndTeam = sc.nextLine().split("-");
  18. String creator = creatorAndTeam[0];
  19. String teamName = creatorAndTeam[1];
  20. if (teamsByName.containsKey(teamName)) {
  21. System.out.printf("Team %s was already created!%n", teamName);
  22. continue;
  23. }
  24.  
  25. if (creators.contains(creator)) {
  26. System.out.printf("%s cannot create another team!%n", creator);
  27. continue;
  28. }
  29.  
  30. Team team = new Team(teamName, creator);
  31. teamsByName.put(teamName, team);
  32. creators.add(creator);
  33. overallMembers.add(creator);
  34. System.out.printf("Team %s has been created by %s!%n", teamName, creator);
  35. }
  36.  
  37. String line = sc.nextLine();
  38.  
  39. while (!line.equalsIgnoreCase("end of assignment")) {
  40. String[] memberAndTeam = line.split("->");
  41. String member = memberAndTeam[0];
  42. String teamName = memberAndTeam[1];
  43.  
  44. if (!teamsByName.containsKey(teamName)) {
  45. System.out.printf("Team %s does not exist!%n", teamName);
  46. line = sc.nextLine();
  47. continue;
  48. }
  49.  
  50. if (overallMembers.contains(member)) {
  51. System.out.printf("Member %s cannot join team %s!%n", member, teamName);
  52. line = sc.nextLine();
  53. continue;
  54. }
  55.  
  56. Team team = teamsByName.get(teamName);
  57. team.addMember(member);
  58. overallMembers.add(member);
  59.  
  60. line = sc.nextLine();
  61. }
  62.  
  63. teamsByName
  64. .entrySet()
  65. .stream()
  66. .filter(kvp -> !kvp.getValue().isDisband())
  67. .sorted(
  68. Comparator.comparing(kvp -> ((Map.Entry<String, Team>) kvp).getValue().size())
  69. .reversed()
  70. .thenComparing(kvp -> ((Map.Entry<String, Team>) kvp).getKey())
  71. ).map(Map.Entry::getValue)
  72. .forEach(System.out::print);
  73.  
  74. System.out.println("Teams to disband:");
  75. teamsByName
  76. .entrySet()
  77. .stream()
  78. .filter(kvp -> kvp.getValue().isDisband())
  79. .map(Map.Entry::getKey)
  80. .sorted()
  81. .forEach(System.out::println);
  82. }
  83.  
  84. }
  85.  
  86.  
  87. class Team {
  88. private String name;
  89. private String creator;
  90.  
  91. private Set<String> members;
  92.  
  93. public Team(String name, String leader) {
  94. this.name = name;
  95. this.creator = leader;
  96. this.members = new TreeSet<>();
  97. }
  98.  
  99. public String getName() {
  100. return this.name;
  101. }
  102.  
  103. public void addMember(String member) {
  104. this.members.add("-- " + member + System.lineSeparator());
  105. }
  106.  
  107. public boolean isDisband() {
  108. return this.members.size() == 0;
  109. }
  110.  
  111. public int size() {
  112. return this.members.size();
  113. }
  114.  
  115. @Override
  116. public String toString() {
  117. StringBuilder sb = new StringBuilder();
  118. sb.append(this.getName()).append(System.lineSeparator()).append("- ").append(this.creator).append(System.lineSeparator());
  119. this.members.forEach(sb::append);
  120. return sb.toString();
  121. }
  122. }
Advertisement
Add Comment
Please, Sign In to add comment