kalinikov

04. Hornet Armada - Yanislav!!!

Dec 4th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.61 KB | None | 0 0
  1. import java.util.Comparator;
  2. import java.util.LinkedHashMap;
  3. import java.util.Map;
  4. import java.util.Scanner;
  5. import java.util.regex.Matcher;
  6. import java.util.regex.Pattern;
  7.  
  8. public class HornetArmada {
  9. public static void main(String[] args) {
  10. Scanner sc = new Scanner(System.in);
  11.  
  12. LinkedHashMap<String, LinkedHashMap<String, Long>> legionsSoldiers = new LinkedHashMap<>();
  13. LinkedHashMap<String, Integer> legionsActivities = new LinkedHashMap<>();
  14. int n = Integer.parseInt(sc.nextLine());
  15.  
  16. for (int i = 0; i < n; i++) {
  17. String[] input = sc.nextLine().split(" = | -> |:");
  18. int lastActivity = Integer.parseInt(input[0]);
  19. String legionName = input[1];
  20. String soldierType = input[2];
  21. long soldierCount = Long.parseLong(input[3]);
  22.  
  23. legionsSoldiers.putIfAbsent(legionName, new LinkedHashMap<>());
  24. legionsSoldiers.get(legionName).putIfAbsent(soldierType, (long) 0);
  25. long newCount = legionsSoldiers.get(legionName).get(soldierType) + soldierCount;
  26. legionsSoldiers.get(legionName).put(soldierType, newCount);
  27.  
  28. legionsActivities.putIfAbsent(legionName, 0);
  29. int activity = legionsActivities.get(legionName);
  30. if (lastActivity > activity) {
  31. legionsActivities.put(legionName, lastActivity);
  32. }
  33. }
  34.  
  35. String[] input = sc.nextLine().split("\\\\");
  36.  
  37. if (input.length == 2) {
  38. LinkedHashMap<String, Long> map = new LinkedHashMap<>();
  39. int activity = Integer.parseInt(input[0]);
  40. String soldierType = input[1];
  41.  
  42. legionsActivities.entrySet().stream()
  43. .filter(entry -> entry.getValue() < activity && legionsSoldiers.get(entry.getKey()).containsKey(soldierType))
  44. .forEach(entry -> map.put(entry.getKey(), legionsSoldiers.get(entry.getKey()).get(soldierType)));
  45.  
  46. map.entrySet().stream()
  47. .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
  48. .forEach(nameCount -> System.out.printf("%s -> %d%n", nameCount.getKey(), nameCount.getValue()));
  49.  
  50. } else {
  51. String soldierType = input[0];
  52.  
  53. legionsActivities.entrySet().stream()
  54. .filter(entry -> legionsSoldiers.get(entry.getKey()).containsKey(soldierType))
  55. .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
  56. .forEach(entry -> System.out.printf("%d : %s%n", entry.getValue(), entry.getKey()));
  57. }
  58. }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment