Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace _04.CubicAssault
- {
- class Program
- {
- static void Main(string[] args)
- {
- string input = Console.ReadLine();
- var assaultData = new Dictionary<string, Dictionary<string, long>>();
- while (input != "Count em all")
- {
- var splitInput = input.Split(new string[] { " -> " },
- StringSplitOptions.RemoveEmptyEntries)
- .ToArray();
- string regionName = splitInput[0];
- string meteorType = splitInput[1];
- int count = int.Parse(splitInput[2]);
- if (!assaultData.ContainsKey(regionName))
- {
- assaultData.Add(regionName, new Dictionary<string, long>());
- assaultData[regionName].Add("Black", 0);
- assaultData[regionName].Add("Red", 0);
- assaultData[regionName].Add("Green", 0);
- }
- if (assaultData[regionName].ContainsKey(meteorType))
- {
- assaultData[regionName][meteorType] += count;
- long green = assaultData[regionName]["Green"];
- long convertToRed = green / 1000000;
- assaultData[regionName]["Red"] += convertToRed;
- assaultData[regionName]["Green"] -= (convertToRed * 1000000);
- long red = assaultData[regionName]["Red"];
- long convertToBlack = red / 1000000;
- assaultData[regionName]["Black"] += convertToBlack;
- assaultData[regionName]["Red"] -= (convertToBlack * 1000000);
- }
- input = Console.ReadLine();
- }
- foreach (var pair in assaultData.OrderByDescending(x => x.Value["Black"])
- .ThenBy(y => y.Key.Length)
- .ThenBy(z => z.Key))
- {
- string meteor = pair.Key;
- var meteorsData = pair.Value;
- Console.WriteLine(meteor);
- foreach (var meteors in meteorsData.OrderByDescending(x => x.Value)
- .ThenBy(x => x.Key))
- {
- Console.WriteLine("-> {0} : {1}", meteors.Key, meteors.Value);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment