Advertisement
miroslavbstoyanov

Untitled

Nov 3rd, 2017
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.02 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. string pattern = @"([0-9]+) = (.*) -> (.*):([0-9]+)";
  16. long n = long.Parse(Console.ReadLine());
  17.  
  18. for (int i = 0; i < n; i++)
  19. {
  20. CalculateLegions(dictLegion, pattern);
  21. }
  22. Output(dictLegion);
  23. }
  24.  
  25. private static void CalculateLegions(Dictionary<string, Legion> dictLegion, string pattern)
  26. {
  27. string input = Console.ReadLine();
  28.  
  29. foreach (Match m in Regex.Matches(input, pattern))
  30. {
  31. string legionName = m.Groups[2].ToString();
  32. long legionActivity = long.Parse(m.Groups[1].ToString());
  33. string soldierTipe = m.Groups[3].ToString();
  34. long soldierCount = long.Parse(m.Groups[4].ToString());
  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.  
  64. private static void Output(Dictionary<string, Legion> dictLegion)
  65. {
  66. string[] readCommand = Console.ReadLine().Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries);
  67. if (readCommand.Length > 1)
  68. {
  69. long activity = long.Parse(readCommand[0]);
  70. string soldierTipe = readCommand[1];
  71. PrintLastActivitySoldierType(dictLegion, activity, soldierTipe);
  72. }
  73. else
  74. {
  75. string soldierTipe = readCommand[0];
  76. SoldierTipe(dictLegion, soldierTipe);
  77. }
  78. }
  79.  
  80. private static void SoldierTipe(Dictionary<string, Legion> dictLegion, string soldierTipe)
  81. {
  82. foreach (var item in dictLegion.OrderByDescending(x => x.Value.LastActivity))
  83. {
  84. Console.WriteLine("{0} : {1}", item.Value.LastActivity, item.Key);
  85. }
  86. }
  87.  
  88. private static void PrintLastActivitySoldierType(Dictionary<string, Legion> dictLegion, long activity, string soldierTipe)
  89. {
  90. foreach (var item in dictLegion
  91. .Where(x => x.Value.SoldierTipeSoldieName.ContainsKey(soldierTipe))
  92. .Where(x => x.Value.LastActivity < activity)
  93. .OrderByDescending(x => x.Value.SoldierTipeSoldieName[soldierTipe]))
  94. {
  95. Console.WriteLine("{0} -> {1}", item.Key, item.Value.SoldierTipeSoldieName[soldierTipe]);
  96. }
  97. }
  98. }
  99.  
  100. class Legion
  101. {
  102. public long LastActivity { get; set; }
  103. public Dictionary<string, long> SoldierTipeSoldieName { get; set; }
  104. }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement