Advertisement
sivancheva

HornetArmada2

Oct 18th, 2017
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.16 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text.RegularExpressions;
  5.  
  6.  
  7. namespace _04_HornetArmada
  8. {
  9. class HornetArmada
  10. {
  11. static void Main(string[] args)
  12. {
  13.  
  14. var n = int.Parse(Console.ReadLine());
  15. var legionNameActivity = new Dictionary<string, int>();
  16. var legionNameSolder = new Dictionary<string, Dictionary<string, long>>();
  17.  
  18.  
  19. for (int i = 0; i < n; i++)
  20. {
  21. var input = Console.ReadLine();
  22. var inputArr = input.Split(new[] { " = ", " -> ", ":" }, StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim()).ToArray();
  23.  
  24.  
  25. var lastActivity = int.Parse(inputArr[0]);
  26. var legionName = inputArr[1];
  27. var soldierType = inputArr[2];
  28. var soldierCount = long.Parse(inputArr[3]);
  29.  
  30.  
  31. if (!legionNameActivity.ContainsKey(legionName))
  32. {
  33. legionNameActivity.Add(legionName, lastActivity);
  34. }
  35. if (legionNameActivity[legionName] < lastActivity)
  36. {
  37. legionNameActivity[legionName] = lastActivity;
  38. }
  39.  
  40.  
  41. if (!legionNameSolder.ContainsKey(legionName))
  42. {
  43. legionNameSolder.Add(legionName, new Dictionary<string, long>());
  44. legionNameSolder[legionName].Add(soldierType, soldierCount);
  45. }
  46. else if (!legionNameSolder[legionName].ContainsKey(soldierType))
  47. {
  48. legionNameSolder[legionName].Add(soldierType, soldierCount);
  49. }
  50. else
  51. {
  52. legionNameSolder[legionName][soldierType] += soldierCount;
  53. }
  54.  
  55. }
  56. var command = Console.ReadLine();
  57. var patternCommand = new Regex(@"^(?<num>[\d]+)\\(?<soldier>[a-zA-Z]+)$");
  58. var matchedCommand = patternCommand.Match(command);
  59.  
  60. if (matchedCommand.Success)
  61. {
  62. int num = int.Parse(matchedCommand.Groups["num"].Value);
  63. string soldier = matchedCommand.Groups["soldier"].Value;
  64.  
  65. foreach (var legion in legionNameSolder
  66. .Where(x => x.Value.ContainsKey(soldier))
  67. .OrderByDescending(x => x.Value[soldier]))
  68. {
  69.  
  70. if (legionNameActivity[legion.Key] < num)
  71. {
  72. Console.WriteLine($"{legion.Key} -> {legionNameSolder[legion.Key][soldier]}");
  73. }
  74. }
  75. }
  76. else
  77. {
  78. foreach (var legion in legionNameActivity.OrderByDescending( x => x.Value))
  79. {
  80. if (legionNameSolder[legion.Key].ContainsKey(command))
  81. {
  82. Console.WriteLine($"{legion.Value} : {legion.Key}");
  83. }
  84. }
  85. }
  86. }
  87.  
  88. }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement