Advertisement
Deiancom

DragonsArmy

Jan 31st, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.49 KB | None | 0 0
  1. package JavaAdvance.Sets_And_Maps_Advanced.Exercises;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.util.LinkedHashMap;
  7. import java.util.TreeMap;
  8.  
  9. public class E14DragonArmy {
  10.     public static void main(String[] args) throws IOException {
  11.         BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
  12.         int num = Integer.parseInt(rd.readLine());
  13.         LinkedHashMap<String, TreeMap<String, int[]>> dragons = new LinkedHashMap<>();
  14.  
  15.         for (int i = 0; i < num; i++) {
  16.             String[] tokens = rd.readLine().split(" ");
  17.             String type = tokens[0];
  18.             String name = tokens[1];
  19.             int damage = tokens[2].equals("null") ? 45 : Integer.parseInt(tokens[2]);
  20.             int health = tokens[3].equals("null") ? 250 : Integer.parseInt(tokens[3]);
  21.             int armor = tokens[4].equals("null") ? 10 : Integer.parseInt(tokens[4]);
  22.  
  23.             if (!dragons.containsKey(type)) {
  24.                 dragons.put(type, new TreeMap<>() {{
  25.                     put(name, new int[]{damage, health, armor});
  26.                 }});
  27.             } else {
  28.                 if (!dragons.get(type).containsKey(name)) {
  29.                     dragons.get(type).put(name, new int[]{damage, health, armor});
  30.                 } else {
  31.                     dragons.get(type).get(name)[0] = damage;
  32.                     dragons.get(type).get(name)[1] = health;
  33.                     dragons.get(type).get(name)[2] = armor;
  34.                 }
  35.             }
  36.         }
  37.         dragons.forEach((key, value) -> {
  38.             double averageDamage;
  39.             double averageHealth;
  40.             double averageArmor;
  41.             int[] data = new int[3];
  42.             value.forEach((key1, value1) -> {
  43.                 int damage = value1[0];
  44.                 int health = value1[1];
  45.                 int armor = value1[2];
  46.                 data[0] += damage;
  47.                 data[1] += health;
  48.                 data[2] += armor;
  49.  
  50.             });
  51.             averageDamage = data[0] / (value.size() * 1.00);
  52.             averageHealth = data[1] / (value.size() * 1.00);
  53.             averageArmor = data[2] / (value.size() * 1.00);
  54.             System.out.printf("%s::(%.2f/%.2f/%.2f)%n", key, averageDamage, averageHealth, averageArmor);
  55.  
  56.             value.forEach((key1, value1) -> System.out.printf("-%s -> damage: %d, health: %d, armor: %d%n", key1,
  57.                     value1[0], value1[1], value1[2]));
  58.         });
  59.     }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement