Advertisement
Guest User

Untitled

a guest
Oct 20th, 2017
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.28 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace _04_Hornet_Armada
  6. {
  7. public class HornetArmada
  8. {
  9. public static void Main()
  10. {
  11. List<Legion> legions = new List<Legion>();
  12.  
  13. int n = int.Parse(Console.ReadLine());
  14.  
  15. for (int i = 1; i <= n; i++)
  16. {
  17. string nLines = Console.ReadLine();
  18. var tokens = nLines.Split("=->: ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToArray();
  19.  
  20. int lastActivity = int.Parse(tokens[0]);
  21. string legionName = tokens[1];
  22. string soldierType = tokens[2];
  23. int soldierCount = int.Parse(tokens[3]);
  24.  
  25. if (legions.Any(x => x.LegionName == legionName))
  26. {
  27. var existingLegion = legions.First(x => x.LegionName == legionName);
  28. if (existingLegion.Soldiers.Any(x => x.SolderType == soldierType))
  29. {
  30. var existingSolderType = existingLegion.Soldiers.First(x => x.SolderType == soldierType);
  31. existingSolderType.SolderCount += soldierCount;
  32. }
  33. else
  34. {
  35. var soldiers = new Soldier(soldierType, soldierCount);
  36. existingLegion.Soldiers.Add(soldiers);
  37. }
  38. if (lastActivity > existingLegion.LastActivity)
  39. {
  40. existingLegion.LastActivity = lastActivity;
  41. }
  42. ;
  43. }
  44. else
  45. {
  46. var solder = new Soldier(soldierType, soldierCount);
  47. var legion = new Legion(lastActivity, legionName, new List<Soldier>());
  48. legion.Soldiers.Add(solder);
  49. legions.Add(legion);
  50. }
  51. }
  52.  
  53. string line = Console.ReadLine();
  54.  
  55. if (line.Contains("\\"))
  56. {
  57. var tokens = line.Split('\\').ToArray();
  58.  
  59. int activity = int.Parse(tokens[0]);
  60. string solderType = tokens[1];
  61.  
  62. //SORTING
  63. legions = legions.Where(x => x.LastActivity < activity).ToList();
  64. foreach (var legion in legions)
  65. {
  66. legion.Soldiers.RemoveAll(x => x.SolderType != solderType);
  67. }
  68.  
  69. foreach (var legion in legions.OrderByDescending(x => x.Soldiers.Sum(z => z.SolderCount)).ThenBy(x => x.LegionName))
  70. {
  71. foreach (var soldier in legion.Soldiers)
  72. {
  73. Console.WriteLine($"{legion.LegionName} -> {soldier.SolderCount}");
  74. }
  75. }
  76. }
  77. else
  78. {
  79. string solderType = line;
  80.  
  81. //REMOVE NON-WANTED SOLDIERS
  82. foreach (var legion in legions)
  83. {
  84. legion.Soldiers.RemoveAll(x => x.SolderType != solderType);
  85. }
  86.  
  87. //PRINT THE INFO
  88. foreach (var legion in legions.OrderByDescending(x => x.LastActivity).ThenBy(x => x.LegionName))
  89. {
  90. int lastActivity = legion.LastActivity;
  91. string legionName = legion.LegionName;
  92.  
  93. Console.WriteLine($"{lastActivity} : {legionName}");
  94. }
  95. }
  96. }
  97. }
  98.  
  99. public class Legion
  100. {
  101. public Legion(int lastActivity, string legionName, List<Soldier> soldiers)
  102. {
  103. LastActivity = lastActivity;
  104. LegionName = legionName;
  105. Soldiers = soldiers;
  106. }
  107.  
  108. public int LastActivity { get; set; }
  109.  
  110. public string LegionName { get; set; }
  111.  
  112. public List<Soldier> Soldiers { get; set; }
  113. }
  114.  
  115. public class Soldier
  116. {
  117. public Soldier(string solderType, int solderCount)
  118. {
  119. SolderType = solderType;
  120. SolderCount = solderCount;
  121. }
  122.  
  123. public string SolderType { get; set; }
  124.  
  125. public int SolderCount { get; set; }
  126. }
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement