Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Uprajnenie;
- import java.util.LinkedHashMap;
- import java.util.Map;
- import java.util.Scanner;
- import java.util.TreeMap;
- public class DragonArmy {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- // Read the number of dragons
- int N = Integer.parseInt(scanner.nextLine());
- // Initialize a map to store dragons by type
- Map<String, Map<String, int[]>> dragonsByType = new LinkedHashMap<>();
- // Process input for each dragon
- for (int i = 0; i < N; i++) {
- String[] dragonData = scanner.nextLine().split("\\s+");
- String type = dragonData[0];
- String name = dragonData[1];
- int damage = dragonData[2].equals("null") ? 45 : Integer.parseInt(dragonData[2]);
- int health = dragonData[3].equals("null") ? 250 : Integer.parseInt(dragonData[3]);
- int armor = dragonData[4].equals("null") ? 10 : Integer.parseInt(dragonData[4]);
- // Add or update the dragon's stats for the given type
- dragonsByType.computeIfAbsent(type, k -> new TreeMap<>())
- .put(name, new int[]{damage, health, armor});
- }
- // Print aggregated data for each dragon type
- dragonsByType.forEach((type, dragons) -> {
- // Calculate average stats
- double avgDamage = dragons.values().stream().mapToInt(d -> d[0]).average().orElse(0);
- double avgHealth = dragons.values().stream().mapToInt(d -> d[1]).average().orElse(0);
- double avgArmor = dragons.values().stream().mapToInt(d -> d[2]).average().orElse(0);
- // Print type and average stats
- System.out.printf("%s::(%.2f/%.2f/%.2f)%n", type, avgDamage, avgHealth, avgArmor);
- // Print individual dragon stats
- dragons.forEach((name, stats) -> {
- System.out.printf("-%s -> damage: %d, health: %d, armor: %d%n",
- name, stats[0], stats[1], stats[2]);
- });
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement