Advertisement
Guest User

Untitled

a guest
Feb 8th, 2018
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 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_Cubic_Assault
  9. {
  10.  
  11. class CubikAssault
  12. {
  13. static void Main()
  14. {
  15. var regionsAndArmy = new SortedDictionary<string, SortedDictionary<string, long>>();
  16. while (true)
  17. {
  18. string input = Console.ReadLine();
  19. if (input == "Count em all")
  20. break;
  21.  
  22. string[] regionData = input
  23. .Split(new[] {" -> "}, StringSplitOptions.RemoveEmptyEntries)
  24. .ToArray();
  25.  
  26. string regionName = regionData[0];
  27. string meteorType = regionData[1];
  28. long countArmy = long.Parse(regionData[2]);
  29.  
  30. if (!regionsAndArmy.ContainsKey(regionName))
  31. {
  32. regionsAndArmy[regionName] = new SortedDictionary<String, long>();
  33. regionsAndArmy[regionName]["Black"] = 0;
  34. regionsAndArmy[regionName]["Green"] = 0;
  35. regionsAndArmy[regionName]["Red"] = 0;
  36. }
  37.  
  38. regionsAndArmy[regionName][meteorType] += countArmy;
  39.  
  40. }
  41.  
  42. foreach (var region in regionsAndArmy)
  43. {
  44. if (regionsAndArmy[region.Key]["Green"] / 1000000 >= 1|| regionsAndArmy[region.Key]["Green"] / 1000000 <= -1)
  45. {
  46. long addRedMeteors = regionsAndArmy[region.Key]["Green"] / 1000000;
  47. regionsAndArmy[region.Key]["Red"] += addRedMeteors;
  48. long leftGreenMeteor = regionsAndArmy[region.Key]["Green"] % 1000000;
  49. regionsAndArmy[region.Key]["Green"] = leftGreenMeteor;
  50. }
  51.  
  52. if (regionsAndArmy[region.Key]["Red"] / 1000000 >= 1 || regionsAndArmy[region.Key]["Red"] / 1000000 <= -1)
  53. {
  54. long addBlackMeteors = regionsAndArmy[region.Key]["Red"] / 1000000;
  55. regionsAndArmy[region.Key]["Black"] += addBlackMeteors;
  56. long leftRedMeteor = regionsAndArmy[region.Key]["Red"] % 1000000;
  57. regionsAndArmy[region.Key]["Red"] = leftRedMeteor;
  58. }
  59. }
  60.  
  61. var regions = regionsAndArmy
  62. .Select(m => new
  63. {
  64. RegionName = m.Key,
  65. BlackMeteors = m.Value["Black"]
  66. })
  67. .OrderByDescending(r => r.BlackMeteors)
  68. .ThenBy(r => r.RegionName.Length);
  69.  
  70. foreach (var r in regions)
  71. {
  72. Console.WriteLine(r.RegionName);
  73. regionsAndArmy[r.RegionName]
  74. .OrderByDescending(x => x.Value)
  75. .ToList()
  76. .ForEach(c => Console.WriteLine($"-> {c.Key} : {c.Value}"));
  77. }
  78.  
  79. }
  80. }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement