Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
688
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.42 KB | None | 0 0
  1. import java.util.*;
  2. import java.util.concurrent.atomic.AtomicInteger;
  3.  
  4. public class kur {
  5.     public static void main(String[] args) {
  6.         Scanner scanner = new Scanner(System.in);
  7.  
  8.         Map<String, LinkedHashMap<String, Integer>> contests = new LinkedHashMap<>();
  9.         String input;
  10.  
  11.         while (!"no more time".equals(input = scanner.nextLine())) {
  12.  
  13.             String[] inputLine = input.split(" -> ");
  14.  
  15.             String name = inputLine[0];
  16.             String contest = inputLine[1];
  17.             int points = Integer.parseInt(inputLine[2]);
  18.  
  19.             contests.putIfAbsent(contest, new LinkedHashMap<>());
  20.             contests.get(contest).putIfAbsent(name, -1);
  21.             if (contests.get(contest).get(name) < points) {
  22.                 contests.get(contest).put(name, points);
  23.             }
  24.         }
  25.         AtomicInteger num = new AtomicInteger(1);
  26.  
  27.         contests.entrySet().stream().forEach(e -> {
  28.             num.set(1);
  29.             System.out.println(e.getKey() + ": " + e.getValue().size() + " participants");
  30.             e.getValue().entrySet().stream().sorted((k2, k1) -> {
  31.                 int sort = Integer.compare(k1.getValue(), k2.getValue());
  32.                 if (sort == 0) {
  33.                     sort = k2.getKey().compareTo(k1.getKey());
  34.  
  35.                 }
  36.                 return sort;
  37.             }).forEach(element -> {
  38.                 System.out.printf("%d. %s <::> %d\n", num.getAndIncrement(), element.getKey(), element.getValue());
  39.             });
  40.         });
  41.  
  42.         Map<String, Integer> standings = new LinkedHashMap<>();
  43.  
  44.         for(Map.Entry<String, LinkedHashMap<String, Integer>> wtf : contests.entrySet()) {
  45.             for (Map.Entry<String, Integer> lol : wtf.getValue().entrySet()) {
  46.                 standings.putIfAbsent(lol.getKey(), 0);
  47.                 standings.put(lol.getKey(), standings.get(lol.getKey()) + lol.getValue());
  48.             }
  49.         }
  50.         System.out.println("Individual standings:");
  51.         num.set(1);
  52.  
  53.         standings.entrySet().stream().sorted((e2, e1) -> {
  54.             int sort = Integer.compare(e1.getValue(), e2.getValue());
  55.             if (sort == 0) {
  56.                 sort = e2.getKey().compareTo(e1.getKey());
  57.             }
  58.             return sort;
  59.  
  60.         }).forEach(element -> {
  61.             System.out.printf("%d. %s -> %d\n", num.getAndIncrement(), element.getKey(), element.getValue());
  62.         });
  63.  
  64.  
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement