Advertisement
Valeri12580

Dragon Army

Apr 19th, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.02 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.*;
  5.  
  6. public class mainDragonArmy {
  7. public static void main(String[] args) throws IOException {
  8. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  9.  
  10. int n = Integer.parseInt(reader.readLine());
  11. Map<String, Map<String, List<DragonArmy>>> result = new LinkedHashMap<>();
  12. for (int i = 0; i < n; i++) {
  13. String[] input = reader.readLine().split("\\s+");
  14. String type = input[0];
  15. String name = input[1];
  16. String damage = input[2];
  17. String health = input[3];
  18. String armor = input[4];
  19. int damageToInt = 0;
  20. int healthToInt = 0;
  21. int armorToInt = 0;
  22.  
  23.  
  24. result.putIfAbsent(type, new TreeMap<>());
  25.  
  26.  
  27. if (!damage.equals("null")) {
  28. damageToInt = Integer.parseInt(input[2]);
  29.  
  30. } else {
  31. damageToInt = 45;
  32.  
  33. }
  34. if (!health.equals("null")) {
  35. healthToInt = Integer.parseInt(input[3]);
  36. } else {
  37. healthToInt = 250;
  38. }
  39. if (!armor.equals("null")) {
  40. armorToInt = Integer.parseInt(input[4]);
  41. } else {
  42. armorToInt = 10;
  43. }
  44.  
  45. DragonArmy currentDragon = new DragonArmy(damageToInt, healthToInt, armorToInt);
  46. result.get(type).put(name, new ArrayList<>());
  47. if (result.get(type).containsKey(name)) {
  48. result.get(type).get(name).clear();
  49. result.get(type).get(name).add(currentDragon);
  50. } else {
  51. result.get(type).get(name).add(currentDragon);
  52. }
  53.  
  54. }
  55.  
  56.  
  57. for (Map.Entry<String, Map<String, List<DragonArmy>>> firstMap : result.entrySet()) {
  58. double averageDamage = 0;
  59. double averageHealth = 0;
  60. double averageArmor = 0;
  61. int count = 0;
  62. String currentType = "";
  63. count = firstMap.getValue().size();
  64. currentType = firstMap.getKey();
  65. for (Map.Entry<String, List<DragonArmy>> secondMap : firstMap.getValue().entrySet()) {
  66. averageDamage += secondMap.getValue().get(0).getDamage();
  67. averageHealth += secondMap.getValue().get(0).getHealth();
  68. averageArmor += secondMap.getValue().get(0).getArmor();
  69.  
  70. }
  71. averageDamage /= count;
  72. averageHealth /= count;
  73. averageArmor /= count;
  74. System.out.printf("%s::(%.2f/%.2f/%.2f)%n", currentType, averageDamage, averageHealth, averageArmor);
  75. firstMap.getValue().entrySet().stream().forEach(j -> {
  76.  
  77. String name = j.getKey();
  78. int damage = j.getValue().get(0).getDamage();
  79. int health = j.getValue().get(0).getHealth();
  80. int armor = j.getValue().get(0).getArmor();
  81. System.out.printf("-%s -> damage: %d, health: %d, armor: %d%n", name, damage, health, armor
  82. );
  83.  
  84. });
  85.  
  86.  
  87. }
  88.  
  89.  
  90. }
  91.  
  92. public static class DragonArmy {
  93. private int damage = 0;
  94. private int health = 0;
  95. private int armor = 0;
  96.  
  97. public DragonArmy(int damage, int health, int armor) {
  98. this.damage = damage;
  99. this.health = health;
  100. this.armor = armor;
  101. }
  102.  
  103.  
  104. public int getDamage() {
  105. return damage;
  106. }
  107.  
  108. public void setDamage(int damage) {
  109. this.damage = damage;
  110. }
  111.  
  112. public int getHealth() {
  113. return health;
  114. }
  115.  
  116. public void setHealth(int health) {
  117. this.health = health;
  118. }
  119.  
  120. public int getArmor() {
  121. return armor;
  122. }
  123.  
  124. public void setArmor(int armor) {
  125. this.armor = armor;
  126. }
  127. }
  128.  
  129.  
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement