Advertisement
Guest User

Untitled

a guest
Apr 10th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.92 KB | None | 0 0
  1. import java.util.*;
  2. import java.util.concurrent.atomic.AtomicInteger;
  3.  
  4.  
  5. public class AnonymousCache {
  6.     public static void main(String[] args) {
  7.  
  8.         Scanner scanner = new Scanner(System.in);
  9.  
  10.         Map<String, Map<String, Integer>> contest = new HashMap<>();
  11.         Map<String, String> registeredContestants = new HashMap<>();
  12.         String data;
  13.  
  14.         while (!"END".equals(data = scanner.nextLine())) {
  15.            
  16.             String[] info = data.split("\\s+->\\s+");
  17.  
  18.             String contestant = info[1];
  19.             String country = info[0];
  20.  
  21.             registeredContestants.putIfAbsent(contestant, country);
  22.  
  23.             if (!registeredContestants.get(contestant).equals(country)) {
  24.                 continue;
  25.             }
  26.             int points = Integer.parseInt(info[2]);
  27.  
  28.             contest.putIfAbsent(country, new LinkedHashMap<>());
  29.             contest.get(country).putIfAbsent(contestant, 0);
  30.             contest.get(country).put(contestant, contest.get(country).get(contestant) + points);
  31.         }
  32.         Map<String, Integer> countriesPoints = new HashMap<>();
  33.  
  34.         for(Map.Entry<String, Map<String, Integer>> entry : contest.entrySet()) {
  35.  
  36.             int currentSum = 0;
  37.  
  38.             for (Map.Entry<String, Integer> subEntry: entry.getValue().entrySet()) {
  39.  
  40.                 currentSum += subEntry.getValue();
  41.             }
  42.             countriesPoints.put(entry.getKey(), currentSum);
  43.         }
  44.         contest.entrySet().stream().sorted((pair1, pair2) -> {
  45.  
  46.             return Integer.compare(countriesPoints.get(pair2.getKey()), countriesPoints.get(pair1.getKey()));
  47.  
  48.         }).forEach(pair -> {
  49.  
  50.             System.out.println(String.format("%s: %d", pair.getKey(), countriesPoints.get(pair.getKey())));
  51.  
  52.             pair.getValue().forEach((key, value) -> System.out.println(String.format("-- %s -> %d"
  53.                     , key, value)));
  54.         });
  55.     }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement