Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace HornetArmada
- {
- class Program
- {
- static void Main(string[] args)
- {
- int n = int.Parse(Console.ReadLine());
- // input will be in the format:
- // { lastActivity} = { legionName} -> { soldierType}:{ soldierCount}
- Dictionary<string, Dictionary<string, Dictionary<long, long>>> legions = new Dictionary<string, Dictionary<string, Dictionary<long, long>>>();
- for (int i = 0; i < n; i++)
- {
- string[] input = Console.ReadLine()
- .Split(" :=->".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
- .ToArray();
- string legionType = input[1];
- long lastActivity = long.Parse(input[0]);
- string soldierType = input[2];
- long soldiersNumber = long.Parse(input[3]);
- Dictionary<long, long> activities = new Dictionary<long, long>();
- Dictionary<string, Dictionary<long, long>> soldiersTypes =
- new Dictionary<string, Dictionary<long, long>>();
- if (legions.ContainsKey(legionType) == false)
- {
- activities.Add(lastActivity, soldiersNumber);
- soldiersTypes.Add(soldierType, activities);
- legions.Add(legionType, soldiersTypes);
- }
- else if (legions[legionType].ContainsKey(soldierType) == false)
- {
- activities.Add(lastActivity, soldiersNumber);
- legions[legionType].Add(soldierType, activities);
- }
- else if (legions[legionType][soldierType].ContainsKey(lastActivity) == false)
- {
- legions[legionType][soldierType].Add(lastActivity, soldiersNumber);
- }
- else
- {
- legions[legionType][soldierType][lastActivity]+= soldiersNumber;
- }
- }
- string[] command = Console.ReadLine()
- .Split('\\')
- .ToArray();
- //printing the result
- if (command.Length == 2)
- {
- long aactivity = long.Parse(command[0]);
- string ssoldierType = command[1];
- Dictionary<string, long> resultToPrint = new Dictionary<string, long>();
- foreach (var llegion in legions)
- {
- foreach (var ssoldier in llegion.Value.Where(x => x.Key==ssoldierType))
- {
- List<long> soldierNum = new List<long>();
- if (ssoldier.Value.OrderByDescending(x => x.Key).First().Key < aactivity)
- {
- foreach (var task in ssoldier.Value)
- {
- soldierNum.Add(task.Value);
- }
- resultToPrint.Add(llegion.Key, soldierNum.Sum());
- }
- }
- }
- foreach (var item in resultToPrint.OrderByDescending(x=>x.Value))
- {
- Console.WriteLine(item.Key+ " -> " +item.Value);
- }
- }
- else
- {
- Dictionary<string, long> resultForPrint = new Dictionary<string, long>();
- string ssoldierType = command[0];
- foreach (var llegion in legions.Where(x=> x.Value.ContainsKey(ssoldierType)))
- {
- long lastActivity=-1;
- foreach (var ssoldier in llegion.Value)
- {
- foreach (var task in ssoldier.Value)
- {
- if (task.Key > lastActivity)
- {
- lastActivity = task.Key;
- }
- }
- }
- resultForPrint.Add(llegion.Key, lastActivity);
- }
- foreach (var item in resultForPrint.OrderByDescending(x=>x.Value))
- {
- Console.WriteLine(item.Value + " : " + item.Key);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement