Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace _04_Hornet_Armada
- {
- public class HornetArmada
- {
- public static void Main()
- {
- List<Legion> legions = new List<Legion>();
- int n = int.Parse(Console.ReadLine());
- for (int i = 1; i <= n; i++)
- {
- string nLines = Console.ReadLine();
- var tokens = nLines.Split("=->: ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToArray();
- int lastActivity = int.Parse(tokens[0]);
- string legionName = tokens[1];
- string soldierType = tokens[2];
- int soldierCount = int.Parse(tokens[3]);
- if (legions.Any(x => x.LegionName == legionName))
- {
- var existingLegion = legions.First(x => x.LegionName == legionName);
- if (existingLegion.Soldiers.Any(x => x.SolderType == soldierType))
- {
- var existingSolderType = existingLegion.Soldiers.First(x => x.SolderType == soldierType);
- existingSolderType.SolderCount += soldierCount;
- }
- else
- {
- var soldiers = new Soldier(soldierType, soldierCount);
- existingLegion.Soldiers.Add(soldiers);
- }
- if (lastActivity > existingLegion.LastActivity)
- {
- existingLegion.LastActivity = lastActivity;
- }
- ;
- }
- else
- {
- var solder = new Soldier(soldierType, soldierCount);
- var legion = new Legion(lastActivity, legionName, new List<Soldier>());
- legion.Soldiers.Add(solder);
- legions.Add(legion);
- }
- }
- string line = Console.ReadLine();
- if (line.Contains("\\"))
- {
- var tokens = line.Split('\\').ToArray();
- int activity = int.Parse(tokens[0]);
- string solderType = tokens[1];
- //SORTING
- legions = legions.Where(x => x.LastActivity < activity).ToList();
- foreach (var legion in legions)
- {
- legion.Soldiers.RemoveAll(x => x.SolderType != solderType);
- }
- foreach (var legion in legions.OrderByDescending(x => x.Soldiers.Sum(z => z.SolderCount)).ThenBy(x => x.LegionName))
- {
- foreach (var soldier in legion.Soldiers)
- {
- Console.WriteLine($"{legion.LegionName} -> {soldier.SolderCount}");
- }
- }
- }
- else
- {
- string solderType = line;
- //REMOVE NON-WANTED SOLDIERS
- foreach (var legion in legions)
- {
- legion.Soldiers.RemoveAll(x => x.SolderType != solderType);
- }
- //PRINT THE INFO
- foreach (var legion in legions.OrderByDescending(x => x.LastActivity).ThenBy(x => x.LegionName))
- {
- int lastActivity = legion.LastActivity;
- string legionName = legion.LegionName;
- Console.WriteLine($"{lastActivity} : {legionName}");
- }
- }
- }
- }
- public class Legion
- {
- public Legion(int lastActivity, string legionName, List<Soldier> soldiers)
- {
- LastActivity = lastActivity;
- LegionName = legionName;
- Soldiers = soldiers;
- }
- public int LastActivity { get; set; }
- public string LegionName { get; set; }
- public List<Soldier> Soldiers { get; set; }
- }
- public class Soldier
- {
- public Soldier(string solderType, int solderCount)
- {
- SolderType = solderType;
- SolderCount = solderCount;
- }
- public string SolderType { get; set; }
- public int SolderCount { get; set; }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement