Advertisement
Whi7eW0lf

Untitled

Jun 25th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.29 KB | None | 0 0
  1.    
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.util.ArrayList;
  6. import java.util.LinkedHashMap;
  7. import java.util.List;
  8. import java.util.Map;
  9.  
  10. class InternationalSoftUniada {
  11.     public static void main(String[] args) throws IOException {
  12.         BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
  13.  
  14.         String input;
  15.  
  16.         Map<String,Map<String,Integer>>result = new LinkedHashMap<>();
  17.  
  18.         while (!"END".equals(input=read.readLine())){
  19.             String[] racer = input.split("(\\s+[->]+\\s+|\\s[–>]+\\s)");
  20.             if (!result.containsKey(racer[0])){ //Bulgaria
  21.                 result.put(racer[0],new LinkedHashMap<>());
  22.                 checkAndPutRacerAndPoint(result, racer);
  23.             }else {
  24.                 checkAndPutRacerAndPoint(result, racer);
  25.             }
  26.         }
  27.         Map<String,Integer> countryPoint = new LinkedHashMap<>();
  28.  
  29.         result.keySet().forEach(e-> countryPoint.put(e,0));
  30.  
  31.         result.forEach((key, value) -> {
  32.             int res = value.values().stream().mapToInt(i -> i).sum();
  33.             countryPoint.put(key, res);
  34.         });
  35.  
  36.         Map<String, List<String>> countryPoint2 = new LinkedHashMap<>();
  37.  
  38.         countryPoint.entrySet().stream().sorted((e1,e2)-> Integer.compare(e2.getValue(),e1.getValue())).forEach(e->{
  39.  
  40.             String key = e.getKey()+": "+e.getValue();
  41.             String otherKey = e.getKey();
  42.             countryPoint2.put(key,new ArrayList<>());
  43.  
  44.             result.get(otherKey).entrySet().forEach(b->{
  45.                 String put = "-- "+b.getKey()+ " -> "+b.getValue();
  46.                 countryPoint2.get(key).add(put);
  47.             });
  48.         });
  49.  
  50.         countryPoint2.forEach((key, value) -> {
  51.             System.out.println(key);
  52.             value.forEach(System.out::println);
  53.         });
  54.  
  55.     }
  56.  
  57.     private static void checkAndPutRacerAndPoint(Map<String, Map<String, Integer>> result, String[] racer) {
  58.         if (!result.get(racer[0]).containsKey(racer[1])){ // Ivan Ivanov
  59.             result.get(racer[0]).put(racer[1],Integer.parseInt(racer[2])); // 25
  60.         }else {
  61.             result.get(racer[0]).put(racer[1],result.get(racer[0]).get(racer[1])+Integer.parseInt(racer[2]));
  62.         }
  63.     }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement