Advertisement
miroslavbstoyanov

Untitled

Nov 4th, 2017
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.91 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Text.RegularExpressions;
  6. using System.Threading.Tasks;
  7.  
  8. namespace _04.Hornet_Armada
  9. {
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. var dictLegion = new Dictionary<string, Legion>();
  15. long n = long.Parse(Console.ReadLine());
  16.  
  17.  
  18. for (int i = 0; i < n; i++)
  19. {
  20. CalculateLegions(dictLegion);
  21. }
  22. Output(dictLegion);
  23. }
  24.  
  25. private static void CalculateLegions(Dictionary<string, Legion> dictLegion)
  26. {
  27. string[] input = Console.ReadLine()
  28. .Split(new string[] { "=", "->", ":", " " }, StringSplitOptions.RemoveEmptyEntries);
  29.  
  30.  
  31. long legionActivity = long.Parse(input[0]);
  32. string legionName = input[1];
  33. string soldierTipe = input[2];
  34. long soldierCount = long.Parse(input[3]);
  35.  
  36. Legion newLegion = new Legion();
  37. newLegion.LastActivity = legionActivity;
  38. newLegion.SoldierTipeSoldieName = new Dictionary<string, long>();
  39. newLegion.SoldierTipeSoldieName.Add(soldierTipe, soldierCount);
  40.  
  41. if (!dictLegion.ContainsKey(legionName))
  42. {
  43. dictLegion.Add(legionName, newLegion);
  44. }
  45. else if (!dictLegion[legionName].SoldierTipeSoldieName.ContainsKey(soldierTipe))
  46. {
  47. dictLegion[legionName].SoldierTipeSoldieName.Add(soldierTipe, soldierCount);
  48. if (dictLegion[legionName].LastActivity < legionActivity)
  49. {
  50. dictLegion[legionName].LastActivity = legionActivity;
  51. }
  52. }
  53. else
  54. {
  55. dictLegion[legionName].SoldierTipeSoldieName[soldierTipe] += soldierCount;
  56. if (dictLegion[legionName].LastActivity < legionActivity)
  57. {
  58. dictLegion[legionName].LastActivity = legionActivity;
  59. }
  60. }
  61. }
  62.  
  63. private static void Output(Dictionary<string, Legion> dictLegion)
  64. {
  65. string[] readCommand = Console.ReadLine().Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries);
  66. if (readCommand.Length > 1)
  67. {
  68. long activity = long.Parse(readCommand[0]);
  69. string soldierTipe = readCommand[1];
  70. PrintLastActivitySoldierType(dictLegion, activity, soldierTipe);
  71. }
  72. else
  73. {
  74. string soldierTipe = readCommand[0];
  75. SoldierTipe(dictLegion, soldierTipe);
  76. }
  77. }
  78.  
  79. private static void SoldierTipe(Dictionary<string, Legion> dictLegion, string soldierTipe)
  80. {
  81. foreach (var item in dictLegion.OrderByDescending(x => x.Value.LastActivity))
  82. {
  83. Console.WriteLine("{0} : {1}", item.Value.LastActivity, item.Key);
  84. }
  85. }
  86.  
  87. private static void PrintLastActivitySoldierType(Dictionary<string, Legion> dictLegion, long activity, string soldierTipe)
  88. {
  89. foreach (var item in dictLegion
  90. .Where(x => x.Value.SoldierTipeSoldieName.ContainsKey(soldierTipe))
  91. .Where(x => x.Value.LastActivity < activity)
  92. .OrderByDescending(x => x.Value.SoldierTipeSoldieName[soldierTipe]))
  93. {
  94. Console.WriteLine("{0} -> {1}", item.Key, item.Value.SoldierTipeSoldieName[soldierTipe]);
  95. }
  96. }
  97. }
  98.  
  99. class Legion
  100. {
  101. public long LastActivity { get; set; }
  102. public Dictionary<string, long> SoldierTipeSoldieName { get; set; }
  103. }
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement