Advertisement
Guest User

Judge

a guest
Mar 11th, 2020
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.83 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class Judge {
  4.     public static void main(String[] args) {
  5.         Scanner sc = new Scanner(System.in);
  6.  
  7.         LinkedHashMap<String, TreeMap<String, Integer>> contests = new LinkedHashMap<>();
  8.         TreeMap<String, Integer> users = new TreeMap<>();
  9.  
  10.         String input = sc.nextLine();
  11.  
  12.         while (!input.equals("no more time")) {
  13.             String[] arr = input.split(" -> ");
  14.  
  15.             String user = arr[0];
  16.             String contest = arr[1];
  17.             int points = Integer.parseInt(arr[2]);
  18.  
  19.             contests.putIfAbsent(contest, new TreeMap<>());
  20.             users.putIfAbsent(user, 0);
  21.             if (contests.get(contest).containsKey(user)) {
  22.                 int setPoint = contests.get(contest).get(user);
  23.                 if (setPoint < points) {
  24.                     contests.get(contest).put(user, points);
  25.                     users.put(user, users.get(user) + (points - setPoint));
  26.                 }
  27.             } else {
  28.                 contests.get(contest).put(user, points);
  29.                 if (users.containsKey(user)) {
  30.                     users.put(user, users.get(user) + points);
  31.                 }
  32.             }
  33.  
  34.             input = sc.nextLine();
  35.         }
  36.  
  37.         for (Map.Entry<String, TreeMap<String, Integer>> c : contests.entrySet()) {
  38.             System.out.printf("%s: %d participants%n",
  39.                     c.getKey(), c.getValue().size());
  40.             List<String> name = new ArrayList<>();
  41.             List<Integer> points = new ArrayList<>();
  42.  
  43.             c.getValue()
  44.                     .entrySet()
  45.                     .stream()
  46.                     .sorted((c1, c2) -> {
  47.                         int first = c1.getValue();
  48.                         int second = c2.getValue();
  49.                         return Integer.compare(second, first);
  50.                     })
  51.                     .forEach(u -> {
  52.                         name.add(u.getKey());
  53.                         points.add(u.getValue());
  54.                     });
  55.             for (int i = 0; i < name.size(); i++) {
  56.                 System.out.printf("%d. %s <::> %d%n", i + 1, name.get(i), points.get(i));
  57.             }
  58.         }
  59.  
  60.         System.out.println("Individual standings:");
  61.         List<String> keysIndividual = new ArrayList<>();
  62.         List<Integer> valuesIndividual = new ArrayList<>();
  63.         users
  64.                 .entrySet()
  65.                 .stream()
  66.                 .sorted((u1, u2) -> Integer.compare(u2.getValue(), u1.getValue()))
  67.                 .forEach(u -> {
  68.                     keysIndividual.add(u.getKey());
  69.                     valuesIndividual.add(u.getValue());
  70.                 });
  71.         for (int i = 0; i < keysIndividual.size(); i++) {
  72.             System.out.printf("%d. %s -> %d%n", i + 1, keysIndividual.get(i), valuesIndividual.get(i));
  73.         }
  74.     }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement