Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Comparator;
- import java.util.LinkedHashMap;
- import java.util.Map;
- import java.util.Scanner;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- public class HornetArmada {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- LinkedHashMap<String, LinkedHashMap<String, Long>> legionsSoldiers = new LinkedHashMap<>();
- LinkedHashMap<String, Integer> legionsActivities = new LinkedHashMap<>();
- int n = Integer.parseInt(sc.nextLine());
- for (int i = 0; i < n; i++) {
- String[] input = sc.nextLine().split(" = | -> |:");
- int lastActivity = Integer.parseInt(input[0]);
- String legionName = input[1];
- String soldierType = input[2];
- long soldierCount = Long.parseLong(input[3]);
- legionsSoldiers.putIfAbsent(legionName, new LinkedHashMap<>());
- legionsSoldiers.get(legionName).putIfAbsent(soldierType, (long) 0);
- long newCount = legionsSoldiers.get(legionName).get(soldierType) + soldierCount;
- legionsSoldiers.get(legionName).put(soldierType, newCount);
- legionsActivities.putIfAbsent(legionName, 0);
- int activity = legionsActivities.get(legionName);
- if (lastActivity > activity) {
- legionsActivities.put(legionName, lastActivity);
- }
- }
- String[] input = sc.nextLine().split("\\\\");
- if (input.length == 2) {
- LinkedHashMap<String, Long> map = new LinkedHashMap<>();
- int activity = Integer.parseInt(input[0]);
- String soldierType = input[1];
- legionsActivities.entrySet().stream()
- .filter(entry -> entry.getValue() < activity && legionsSoldiers.get(entry.getKey()).containsKey(soldierType))
- .forEach(entry -> map.put(entry.getKey(), legionsSoldiers.get(entry.getKey()).get(soldierType)));
- map.entrySet().stream()
- .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
- .forEach(nameCount -> System.out.printf("%s -> %d%n", nameCount.getKey(), nameCount.getValue()));
- } else {
- String soldierType = input[0];
- legionsActivities.entrySet().stream()
- .filter(entry -> legionsSoldiers.get(entry.getKey()).containsKey(soldierType))
- .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
- .forEach(entry -> System.out.printf("%d : %s%n", entry.getValue(), entry.getKey()));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment