Advertisement
Guest User

Untitled

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