Advertisement
Guest User

Untitled

a guest
Mar 17th, 2019
328
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.95 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class kur {
  4.     public static void main(String[] args) {
  5.  
  6.         Scanner scanner = new Scanner(System.in);
  7.  
  8.         Map<String, HashMap<String, List<Integer>>> judgeResults = new HashMap<>();
  9.         String input;
  10.  
  11.         while (!"exam finished".equals(input = scanner.nextLine())) {
  12.  
  13.             String[] command = input.split("-");
  14.             String name = command[0];
  15.             String language = command[1];
  16.  
  17.             if ("banned".equals(language)) {
  18.                 for (Map.Entry<String, HashMap<String, List<Integer>>> wtf : judgeResults.entrySet()) {
  19.                     for (Map.Entry<String, List<Integer>> wow : wtf.getValue().entrySet()) {
  20.                         if (wow.getKey().equals(name)) {
  21.                             for (int i = 0; i < wow.getValue().size(); i++) {
  22.                                 wow.getValue().set(i, 0);
  23.                             }
  24.                         }
  25.                     }
  26.                 }
  27.             }else {
  28.                 int points = Integer.parseInt(command[2]);
  29.                 judgeResults.putIfAbsent(language, new HashMap<>());
  30.                 judgeResults.get(language).putIfAbsent(name, new ArrayList<>());
  31.                 judgeResults.get(language).get(name).add(points);
  32.  
  33.                 for (Map.Entry<String, HashMap<String, List<Integer>>> wtf : judgeResults.entrySet()) {
  34.                     for (Map.Entry<String, List<Integer>> wow : wtf.getValue().entrySet()) {
  35.                         if (wow.getKey().equals(name)) {
  36.                             for (int i = 0; i < wow.getValue().size(); i++) {
  37.                                 if (points > wow.getValue().get(i) && wow.getValue().get(i) != 0) {
  38.                                     wow.getValue().set(i, 0);
  39.                                 }else if (points < wow.getValue().get(i)) {
  40.                                     wow.getValue().set(wow.getValue().indexOf(points), 0);
  41.                                 }
  42.  
  43.                             }
  44.                         }
  45.  
  46.                     }
  47.                 }
  48.             }
  49.         }
  50.         System.out.println("Results:");
  51.         Map<String, List<Integer>> neznam = new HashMap<>();
  52.  
  53.         for (Map.Entry<String, HashMap<String, List<Integer>>> pak : judgeResults.entrySet()) {
  54.             neznam.putAll(pak.getValue());
  55.         }
  56.         neznam.entrySet().stream().sorted((e2, e1) -> {
  57.            
  58.             int sort = Integer.compare(e1.getValue().stream().mapToInt(Integer::intValue).sum(),
  59.                     e2.getValue().stream().mapToInt(Integer::intValue).sum());
  60.             if (sort == 0) {
  61.                 sort = e2.getKey().compareTo(e1.getKey());
  62.             }
  63.             return sort;
  64.  
  65.         }).forEach(e -> {
  66.             System.out.print(e.getKey() + " | ");
  67.             e.getValue().stream().filter(i -> i > 0).forEach(System.out::println);
  68.         });
  69.        
  70. //        neznam.entrySet().stream().sorted((e1, e2) -> {
  71. //            int sum1 = 0;
  72. //            int sum2 = 0;
  73. //            for (Map.Entry<String, List<Integer>> lul : e1.getValue().entrySet()) {
  74. //               sum1 += lul.getValue().stream().mapToInt(Integer::intValue).sum();
  75. //            }
  76. //            for (Map.Entry<String, List<Integer>> lul : e2.getValue().entrySet()) {
  77. //                sum2 += lul.getValue().stream().mapToInt(Integer::intValue).sum();
  78. //            }
  79. //            return Integer.compare(sum1, sum2);
  80. //        })
  81. //                .forEach(wtf -> {
  82. //            for (Map.Entry<String, List<Integer>> omg : wtf.getValue().entrySet()) {
  83. //                if (omg.getValue().stream().mapToInt(Integer::intValue).sum() > 0) {
  84. //
  85. //                    System.out.print(omg.getKey() + " ");
  86. //                    omg.getValue().stream().filter(e -> e > 0).forEach(System.out::println);
  87. //                }
  88. //            }
  89. //        });
  90.         System.out.println("Submissions:");
  91.         judgeResults.entrySet().stream()
  92.                 .sorted((e2, e1) -> {
  93.                    
  94.                     int size1 = 0;
  95.                     for(Map.Entry<String, List<Integer>> wtf : e1.getValue().entrySet()) {
  96.                         size1 += wtf.getValue().size();
  97.                     }
  98.                     int size2 = 0;
  99.                     for(Map.Entry<String, List<Integer>> wtf : e2.getValue().entrySet()) {
  100.                         size2 += wtf.getValue().size();
  101.                     }
  102.                     int sort = Integer.compare(size1, size2);
  103.                     if (sort == 0) {
  104.                         sort = e1.getKey().compareTo(e2.getKey());
  105.                     }
  106.                     return sort;
  107.  
  108.                 })
  109.                 .forEach(e -> {
  110.                    
  111.             int size = 0;
  112.             for(Map.Entry<String, List<Integer>> wtf : e.getValue().entrySet()) {
  113.                 size += wtf.getValue().size();
  114.             }
  115.             System.out.println(e.getKey() + " - " + size);
  116.         });
  117.  
  118.     }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement