Advertisement
Guest User

Untitled

a guest
Apr 19th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.07 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class Ranking {
  4. public static void main(String[] args) {
  5. Scanner scanner = new Scanner(System.in);
  6.  
  7. String input = "";
  8.  
  9. LinkedHashMap<String, String> contestAndPassword = new LinkedHashMap<>();
  10.  
  11. while (!"end of contests".equals(input = scanner.nextLine())) {
  12. String[] data = input.split(":");
  13. String nameContest = data[0];
  14. String password = data[1];
  15.  
  16. contestAndPassword.putIfAbsent(nameContest, password);
  17. contestAndPassword.put(nameContest, password);
  18.  
  19. }
  20.  
  21. String input2 = "";
  22.  
  23. TreeMap<String, Map<String, Integer>> contestAndPoints = new TreeMap<>();
  24.  
  25. while (!"end of submissions".equals(input2 = scanner.nextLine())) {
  26.  
  27. String[] data = input2.split("=>");
  28.  
  29. String contest = data[0];
  30. String password = data[1];
  31. String contestant = data[2];
  32. Integer points = Integer.parseInt(data[3]);
  33.  
  34. if (contestAndPassword.containsKey(contest)) {
  35. if (password.equals(contestAndPassword.get(contest))) {
  36. if (!contestAndPoints.containsKey(contestant)) {
  37. contestAndPoints.put(contestant, new LinkedHashMap<>());
  38. contestAndPoints.get(contestant).put(contest, points);
  39. } else {
  40. if (contestAndPoints.get(contestant).containsKey(contest)) {
  41. if (points > contestAndPoints.get(contestant).get(contest)) {
  42. contestAndPoints.get(contestant).put(contest, points);
  43. }
  44. } else {
  45. contestAndPoints.get(contestant).put(contest, points);
  46. }
  47. }
  48. }
  49. }
  50. }
  51. LinkedHashMap<String, Integer> nameAndSum = new LinkedHashMap<>();
  52. contestAndPoints.entrySet().stream()
  53. .forEach(e -> {
  54. int sum = e.getValue().values().stream().mapToInt(i -> i).sum();
  55. nameAndSum.put(e.getKey(), sum);
  56. });
  57.  
  58. nameAndSum.entrySet().stream()
  59. .sorted((p1, p2) -> Integer.compare(p2.getValue(), p1.getValue()))
  60. .limit(1).forEach(el ->
  61. System.out.println(String.format("Best candidate is %s with total %d points.",
  62. el.getKey(), el.getValue())));
  63.  
  64. System.out.println("Ranking: ");
  65.  
  66. contestAndPoints.entrySet().stream()
  67. .forEach(e -> {
  68. System.out.println(e.getKey());
  69. e.getValue().entrySet().stream()
  70. .sorted(Map.Entry.<String, Integer>comparingByValue().reversed())
  71. .forEach(element -> {
  72. System.out.println(String.format("# %s -> %d", element.getKey(), element.getValue()));
  73. });
  74. });
  75.  
  76.  
  77. }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement