Didart

Dragon Army

Jan 20th, 2023
820
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.79 KB | None | 0 0
  1. package SetsAndMaps3;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.LinkedHashMap;
  5. import java.util.Scanner;
  6. import java.util.TreeMap;
  7.  
  8. public class DragonArmy {
  9.     public static void main(String[] args) {
  10.         Scanner scanner = new Scanner(System.in);
  11.  
  12.         int n = Integer.parseInt(scanner.nextLine());
  13.  
  14.         LinkedHashMap<String, TreeMap<String, ArrayList<Double>>> dragons = new LinkedHashMap<>();
  15.  
  16.         while (n-- > 0) {
  17.             String[] tokens = scanner.nextLine().split("\\s+");
  18.             String type = tokens[0];
  19.             String name = tokens[1];
  20.             double damage = tokens[2].equals("null") ? 45 : Integer.parseInt(tokens[2]);
  21.             double health = tokens[3].equals("null") ? 250 : Integer.parseInt(tokens[3]);
  22.             double armor = tokens[4].equals("null") ? 10 : Integer.parseInt(tokens[4]);
  23.  
  24.             if (!dragons.containsKey(type)) {
  25.                 dragons.put(type, new TreeMap<>() {{
  26.                     put(name, new ArrayList<>() {{
  27.                         add(damage);
  28.                         add(health);
  29.                         add(armor);
  30.                     }});
  31.                 }});
  32.             } else {
  33.                 if (!dragons.get(type).containsKey(name)) {
  34.                     dragons.get(type).put(name, new ArrayList<>() {{
  35.                         add(damage);
  36.                         add(health);
  37.                         add(armor);
  38.                     }});
  39.                 } else {
  40.                     dragons.get(type).get(name).add(0, damage);
  41.                     dragons.get(type).get(name).add(1, health);
  42.                     dragons.get(type).get(name).add(2, armor);
  43.                 }
  44.             }
  45.         }
  46.  
  47.         for (String type : dragons.keySet()) {
  48.             double damageSum = 0;
  49.             double healthSum = 0;
  50.             double armorSum = 0;
  51.  
  52.             StringBuilder builder = new StringBuilder();
  53.  
  54.             for (String name : dragons.get(type).keySet()) {
  55.                 double tempDamage = dragons.get(type).get(name).get(0);
  56.                 double tempHealth = dragons.get(type).get(name).get(1);
  57.                 double tempArmor = dragons.get(type).get(name).get(2);
  58.  
  59.                 builder.append(String.format("-%s -> damage: %.0f, health: %.0f, armor: %.0f%n", name, tempDamage, tempHealth, tempArmor));
  60.  
  61.                 damageSum += tempDamage;
  62.                 healthSum += tempHealth;
  63.                 armorSum += tempArmor;
  64.             }
  65.             damageSum /= dragons.get(type).keySet().size();
  66.             healthSum /= dragons.get(type).keySet().size();
  67.             armorSum /= dragons.get(type).keySet().size();
  68.  
  69.             System.out.printf("%s::(%.2f/%.2f/%.2f)%n", type, damageSum, healthSum, armorSum);
  70.             System.out.print(builder);
  71.         }
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment