miroLLL

Legendary Farming

Feb 15th, 2018
168
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace _09Problem_LegendaryFarming
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.  
  12.             var keyMaterials = new Dictionary<string, long>()
  13.             {
  14.                 {"shards", 0 },
  15.                 {"fragments", 0 },
  16.                 {"motes", 0 }
  17.             };
  18.  
  19.             var junkMaterials = new SortedDictionary<string, long>();
  20.  
  21.             bool keepFarming = true;
  22.             string foundLegendaryItem = "";
  23.  
  24.             while (keepFarming)
  25.             {
  26.                 string[] inputInfo = Console.ReadLine().Split(' ').ToArray();
  27.  
  28.                 for (int i = 0; i < inputInfo.Length; i += 2)
  29.                 {
  30.                     long quantity = long.Parse(inputInfo[i]);
  31.                     string material = inputInfo[i + 1];
  32.  
  33.                     switch (material.ToLower())
  34.                     {
  35.                         case "shards":
  36.                             keyMaterials["shards"] += quantity;
  37.  
  38.                             if (keyMaterials["shards"] >= 250)
  39.                             {
  40.                                 foundLegendaryItem = "Shadowmoure";
  41.                                 keepFarming = false;
  42.                                 keyMaterials["shards"] -= 250;
  43.                             }
  44.                             break;
  45.  
  46.                         case "fragments":
  47.                             keyMaterials["fragments"] += quantity;
  48.  
  49.                             if (keyMaterials["fragments"] >= 250)
  50.                             {
  51.                                 foundLegendaryItem = "Valanyr";
  52.                                 keepFarming = false;
  53.                                 keyMaterials["fragments"] -= 250;
  54.                             }
  55.                             break;
  56.  
  57.                         case "motes":
  58.                             keyMaterials["motes"] += quantity;
  59.  
  60.                             if (keyMaterials["motes"] >= 250)
  61.                             {
  62.                                 foundLegendaryItem = "Dragonwrath";
  63.                                 keepFarming = false;
  64.                                 keyMaterials["motes"] -= 250;
  65.                             }
  66.                             break;
  67.  
  68.                         default:
  69.                             if (junkMaterials.ContainsKey(material) == false)
  70.                             {
  71.                                 junkMaterials.Add(material, quantity);
  72.                             }
  73.                             else
  74.                             {
  75.                                 junkMaterials[material] += quantity;
  76.                             }
  77.                             break;
  78.                     }
  79.  
  80.                     if (keepFarming == false)
  81.                     {
  82.                         break;
  83.                     }
  84.                 }
  85.             }
  86.  
  87.             Console.WriteLine($"{foundLegendaryItem} obtained!");
  88.  
  89.             foreach (var keyMaterial in keyMaterials.OrderByDescending(x => x.Value).ThenBy(x => x.Key))
  90.             {
  91.                 Console.WriteLine($"{keyMaterial.Key}: {keyMaterial.Value}");
  92.             }
  93.  
  94.             foreach (var junkMaterial in junkMaterials)
  95.             {
  96.                 Console.WriteLine($"{junkMaterial.Key}: {junkMaterial.Value}");
  97.             }
  98.         }
  99.     }
  100. }
RAW Paste Data