kalinikov

03. MOBA Challenger

Nov 13th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.05 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class MOBAChallenger {
  4. public static void main(String[] args) {
  5. Scanner scanner = new Scanner(System.in);
  6.  
  7. Map<String, TreeMap<String, Integer>> pool = new HashMap<>();
  8. Map<String, Integer> playersTotalSkills = new HashMap<>();
  9.  
  10. String input = scanner.nextLine();
  11.  
  12. while (!input.equals("Season end")) {
  13. String[] tokens = input.split(" ");
  14.  
  15. if (tokens[1].equals("vs")) {
  16. String player1 = tokens[0];
  17. String player2 = tokens[2];
  18.  
  19. if (pool.containsKey(player1) && pool.containsKey(player2)) {
  20. int totalPointsPlayer1 = playersTotalSkills.get(player1);
  21. int totalPointsPlayer2 = playersTotalSkills.get(player2);
  22.  
  23. final String[] playerToRemove = {""};
  24.  
  25. for (Map.Entry<String, Integer> entry1 : pool.get(player1).entrySet()) {
  26. String player1Position = entry1.getKey();
  27. for (Map.Entry<String, Integer> entry2 : pool.get(player2).entrySet()) {
  28. String player2Position = entry2.getKey();
  29.  
  30. if (player1Position.equals(player2Position)) {
  31. if (totalPointsPlayer1 > totalPointsPlayer2) {
  32. playerToRemove[0] = player2;
  33. } else if (totalPointsPlayer1 < totalPointsPlayer2) {
  34. playerToRemove[0] = player1;
  35. }
  36. }
  37.  
  38. }
  39.  
  40. }
  41.  
  42.  
  43. if (!playerToRemove[0].equals("")) {
  44. pool.remove(playerToRemove[0]);
  45. playersTotalSkills.remove(playerToRemove[0]);
  46. }
  47.  
  48.  
  49. }
  50. Object playerToRemove = new String[]{""};
  51. } else {
  52. String player = tokens[0];
  53. String position = tokens[2];
  54. int skill = Integer.parseInt(tokens[4]);
  55.  
  56.  
  57. if (!pool.containsKey(player)) {
  58. pool.put(player, new TreeMap<>());
  59. pool.get(player).put(position, skill);
  60. playersTotalSkills.put(player, skill);
  61. } else if (!pool.get(player).containsKey(position)) {
  62. pool.get(player).put(position, skill);
  63. playersTotalSkills.put(player, playersTotalSkills.get(player) + skill);
  64. } else if (pool.get(player).get(position) < skill) {
  65. pool.get(player).put(position, skill);
  66. playersTotalSkills
  67. .put(player, playersTotalSkills.get(player) + skill - pool.get(player).get(position));
  68. }
  69.  
  70. }
  71.  
  72. input = scanner.nextLine();
  73. }
  74.  
  75. playersTotalSkills.entrySet()
  76. .stream()
  77. .sorted((f, s) -> {
  78. int result = s.getValue() - f.getValue();
  79. if (result == 0) {
  80. result = f.getKey().compareTo(s.getKey());
  81. }
  82.  
  83. return result;
  84.  
  85. })
  86. .forEach(e -> {
  87. System.out.printf("%s: %d skill%n", e.getKey(), e.getValue());
  88.  
  89. pool.get(e.getKey()).entrySet()
  90. .stream()
  91. .sorted((f, s) -> {
  92. int result = s.getValue() - f.getValue();
  93. if (result == 0) {
  94. result = f.getKey().compareTo(s.getKey());
  95. }
  96. return result;
  97. })
  98.  
  99. .forEach(a -> {
  100. System.out.printf("- %s <::> %d%n", a.getKey(), a.getValue());
  101. });
  102. });
  103.  
  104. }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment