Advertisement
desislava_topuzakova

14. Dragon Army

Jan 18th, 2022
969
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.text.DecimalFormat;
  2. import java.util.*;
  3. import java.util.stream.Collector;
  4. import java.util.stream.Collectors;
  5.  
  6. public class LiveDemo {
  7.     public static void main(String[] args) {
  8.         Scanner scanner = new Scanner(System.in);
  9.  
  10.         int n = Integer.parseInt(scanner.nextLine());
  11.  
  12.         LinkedHashMap<String, TreeMap<String, ArrayList<Double>>> dragons = new LinkedHashMap<>();
  13.  
  14.         while (n-- > 0){
  15.             String[] tokens = scanner.nextLine().split("\\s+");
  16.  
  17.             //{type} {name} {damage} {health} {armor}
  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.println(String.format("%s::(%.2f/%.2f/%.2f)", type, damageSum, healthSum, armorSum));
  70.             System.out.print(builder.toString());
  71.  
  72.  
  73.         }
  74.     }
  75. }
Advertisement
Advertisement
Advertisement
RAW Paste Data Copied
Advertisement