Advertisement
Iv555

Untitled

Feb 11th, 2022
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.72 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace T01TheFightForGondor
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. int numberOfOrcWaves = int.Parse(Console.ReadLine());
  12.  
  13. int[] defence = Console.ReadLine().Split(" ", StringSplitOptions.RemoveEmptyEntries)
  14. .Select(int.Parse).ToArray();
  15.  
  16. Queue<int> platesOfDefence = new Queue<int>(defence);
  17. Stack<int> orcs = new Stack<int>();
  18.  
  19. bool isBreak = false;
  20.  
  21. for (int i = 1; i <= numberOfOrcWaves; i++)
  22. {
  23. int[] orcWaves = Console.ReadLine().Split(" ", StringSplitOptions.RemoveEmptyEntries).Select(int.Parse)
  24. .ToArray();
  25.  
  26. orcs = new Stack<int>(orcWaves);
  27.  
  28. if (i % 3 == 0)
  29. {
  30. platesOfDefence.Enqueue(int.Parse(Console.ReadLine()));
  31. }
  32.  
  33. while (orcs.Count > 0)
  34. {
  35. if (platesOfDefence.Count == 0)
  36. {
  37. isBreak = true;
  38. break;
  39. }
  40.  
  41. if (orcs.Peek() > platesOfDefence.Peek())
  42. {
  43.  
  44. orcs.Push(orcs.Pop() - platesOfDefence.Dequeue());
  45.  
  46. }
  47. else if (orcs.Peek() < platesOfDefence.Peek())
  48. {
  49. Queue<int> updatedPlatesOfDefence = new Queue<int>();
  50. updatedPlatesOfDefence.Enqueue(platesOfDefence.Dequeue() - orcs.Pop());
  51.  
  52. for (int j = 0; j < platesOfDefence.Count; j++)
  53. {
  54. updatedPlatesOfDefence.Enqueue(platesOfDefence.ElementAt(j));
  55. }
  56.  
  57. platesOfDefence = updatedPlatesOfDefence;
  58. }
  59. else
  60. {
  61. orcs.Pop();
  62. platesOfDefence.Dequeue();
  63.  
  64. }
  65.  
  66. }
  67.  
  68. if (isBreak)
  69. {
  70. break;
  71. }
  72. }
  73.  
  74. if (platesOfDefence.Count > 0)
  75. {
  76. Console.WriteLine("The people successfully repulsed the orc's attack.");
  77. Console.WriteLine($"Plates left: {string.Join(", ", platesOfDefence)}");
  78. }
  79. else
  80. {
  81. Console.WriteLine("The orcs successfully destroyed the Gondor's defense.");
  82. Console.WriteLine($"Orcs left: {string.Join(", ", orcs)}");
  83. }
  84.  
  85.  
  86. }
  87. }
  88. }
  89.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement