TheBulgarianWolf

Dragon Army

Mar 13th, 2021
770
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4.  
  5. namespace DragonArmy
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             Dictionary<string, Dictionary<string, Dictionary<string,int>>> dragons = new Dictionary<string, Dictionary<string, Dictionary<string, int>>>();
  12.             Dictionary<string, Dictionary<string,int>> average = new Dictionary<string, Dictionary<string, int>>();
  13.             int loop = int.Parse(Console.ReadLine());
  14.             for(int i = 0; i < loop; i++)
  15.             {
  16.                 string[] arr = Console.ReadLine().Split();
  17.                 string color = arr[0];
  18.                 string type = arr[1];
  19.                 int damage = int.Parse(arr[2]);
  20.                 int health = int.Parse(arr[3]);
  21.                 int armor = int.Parse(arr[4]);
  22.                 if(dragons.ContainsKey(color) == false)
  23.                 {
  24.                     dragons.Add(color, new Dictionary<string, Dictionary<string, int>>());
  25.                 }
  26.  
  27.                 if(dragons[color].ContainsKey(type) == false)
  28.                 {
  29.                     dragons[color].Add(type, new Dictionary<string, int>());
  30.                     dragons[color][type].Add("damage",damage);
  31.                     dragons[color][type].Add("health",health);
  32.                     dragons[color][type].Add("armor",armor);
  33.                 }
  34.  
  35.                 if (dragons[color].ContainsKey(type))
  36.                 {
  37.                     dragons[color].Remove(type);
  38.                     dragons[color].Add(type, new Dictionary<string, int>());
  39.                     dragons[color][type].Add("damage", damage);
  40.                     dragons[color][type].Add("health", health);
  41.                     dragons[color][type].Add("armor", armor);
  42.                 }
  43.                
  44.  
  45.                 if(average.ContainsKey(color) == false)
  46.                 {
  47.                     average.Add(color, new Dictionary<string, int>());
  48.                     average[color].Add(type, 1);
  49.                     average[color].Add("damage",damage);
  50.                     average[color].Add("health", health);
  51.                     average[color].Add("armor", armor);
  52.                     average[color].Add("counter", 1);
  53.                 }
  54.                 else if(average[color].ContainsKey(type))
  55.                 {
  56.                     int diff1 = average[color]["damage"] - damage;
  57.                     int diff2 = average[color]["health"] - health;
  58.                     int diff3 = average[color]["armor"] - armor;
  59.                     average[color]["damage"] += diff1;
  60.                     average[color]["health"] += diff2;
  61.                     average[color]["armor"] += diff3;
  62.                 }
  63.                 else
  64.                 {
  65.                     average[color]["damage"] += damage;
  66.                     average[color]["health"] += health;
  67.                     average[color]["armor"] += armor;
  68.                     average[color]["counter"]++;
  69.                 }
  70.             }
  71.  
  72.             foreach (var col in average.Keys)
  73.             {
  74.                 int count = average[col]["counter"];
  75.                 double averageDmg = (double)average[col]["damage"] / count;
  76.                 double averageHealth = (double)average[col]["health"] / count;
  77.                 double averageArmor = (double)average[col]["armor"] / count;
  78.                 Console.WriteLine($"{col}::({averageDmg:F2}/{averageHealth:F2}/{averageArmor:F2})");
  79.                 foreach(var drag in dragons[col].Keys)
  80.                 {
  81.                     Console.WriteLine($"-{drag} -> damage:{dragons[col][drag]["damage"]}, health:{dragons[col][drag]["health"]}, armor:{dragons[col][drag]["armor"]}");
  82.                 }
  83.             }
  84.            
  85.         }
  86.     }
  87. }
RAW Paste Data