Advertisement
CR7CR7

Judge

Jul 2nd, 2023
754
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.49 KB | None | 0 0
  1. import java.util.LinkedHashMap;
  2. import java.util.Map;
  3. import java.util.Scanner;
  4. import java.util.concurrent.atomic.AtomicInteger;
  5.  
  6. public class Judge {
  7.     public static void main(String[] args) {
  8.         Scanner scanner = new Scanner(System.in);
  9.  
  10.         String input = scanner.nextLine();
  11.  
  12.         Map<String, Map<String, Integer>> storedValues = new LinkedHashMap<>();
  13.  
  14.         while (!input.equals("no more time")) {
  15.             String[] array = input.split(" -> ");
  16.             String username = array[0];
  17.             String contest = array[1];
  18.             int points = Integer.parseInt(array[2]);
  19.  
  20.             if (!storedValues.containsKey(contest)) {
  21.                 storedValues.put(contest, new LinkedHashMap<>());
  22.                 storedValues.get(contest).put(username, points);
  23.             } else {
  24.                 if (storedValues.get(contest).containsKey(username)) {
  25.                     if (points > storedValues.get(contest).get(username)) {
  26.                         storedValues.get(contest).put(username, points);
  27.                     }
  28.                 } else {
  29.                     storedValues.get(contest).put(username, points);
  30.                 }
  31.             }
  32.  
  33.             input = scanner.nextLine();
  34.         }
  35.  
  36.  
  37.         AtomicInteger num = new AtomicInteger();
  38.         storedValues.forEach((k, v) -> {
  39.             num.set(0);
  40.             System.out.printf("%s: %d participants%n", k, v.size());
  41.             v.entrySet().stream().sorted(Map.Entry.<String, Integer>comparingByValue().reversed()
  42.                     .thenComparing(Map.Entry.comparingByKey()))
  43.                     .forEach(e -> System.out.printf("%d. %s <::> %d%n", num.incrementAndGet(), e.getKey(), e.getValue()));
  44.         });
  45.  
  46.         System.out.println("Individual standings:");
  47.  
  48.         Map<String, Integer> results = new LinkedHashMap<>();
  49.  
  50.         for (Map.Entry<String, Map<String, Integer>> entry : storedValues.entrySet()) {
  51.             for (Map.Entry<String, Integer> mapEntry : entry.getValue().entrySet()) {
  52.                 results.putIfAbsent(mapEntry.getKey(), 0);
  53.                 results.put(mapEntry.getKey(), results.get(mapEntry.getKey()) + mapEntry.getValue());
  54.             }
  55.         }
  56.  
  57.         num.set(0);
  58.         results.entrySet().stream().sorted(Map.Entry.<String, Integer>comparingByValue().reversed()
  59.                 .thenComparing(Map.Entry.comparingByKey()))
  60.                 .forEach(e -> System.out.printf("%d. %s -> %d%n", num.incrementAndGet(), e.getKey(), e.getValue()));
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement