Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.62 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5.  
  6. namespace TrojanInvasion
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             int trojanWaves = int.Parse(Console.ReadLine());
  13.  
  14.             List<int> tokenPlates = Console.ReadLine()
  15.                 .Split(' ', StringSplitOptions.RemoveEmptyEntries)
  16.                 .Select(int.Parse)
  17.                 .ToList();
  18.             Queue<int> spartanPlates = new Queue<int>();
  19.             foreach (var plate in tokenPlates)
  20.             {
  21.                 spartanPlates.Enqueue(plate);
  22.             }
  23.  
  24.             Stack<int> trojanWarriors = new Stack<int>();
  25.  
  26.             int fightingWarrior = 0;
  27.  
  28.             int deffendingPlate = 0;
  29.  
  30.             int leftoverPlating = 0;
  31.  
  32.             for (int i = 1; i <= trojanWaves; i++)
  33.             {
  34.                 List<int> inputTrojanWarriors = Console.ReadLine()
  35.                     .Split(' ', StringSplitOptions.RemoveEmptyEntries)
  36.                     .Select(int.Parse)
  37.                     .ToList();
  38.  
  39.                 if (i % 3 == 0)
  40.                 {
  41.                     int addPlate = int.Parse(Console.ReadLine());
  42.                     spartanPlates.Enqueue(addPlate);
  43.                 }
  44.                 else if (spartanPlates.Count <= 0)
  45.                 {
  46.                     break;
  47.                 }
  48.  
  49.                 foreach (var warrior in inputTrojanWarriors)
  50.                 {
  51.                     trojanWarriors.Push(warrior);
  52.                 }
  53.  
  54.                 if (deffendingPlate == 0)
  55.                 {
  56.                     deffendingPlate = spartanPlates.Dequeue();
  57.                 }
  58.  
  59.                 while (trojanWarriors.Count>0 && deffendingPlate>0)
  60.                 {
  61.                     fightingWarrior = trojanWarriors.Pop();
  62.                     if (fightingWarrior > deffendingPlate)
  63.                     {
  64.                         fightingWarrior -= deffendingPlate;
  65.                         trojanWarriors.Push(fightingWarrior);
  66.                         deffendingPlate = 0;
  67.                     }
  68.                     else if (deffendingPlate > fightingWarrior)
  69.                     {
  70.                         deffendingPlate -= fightingWarrior;
  71.                     }
  72.                     else if (fightingWarrior== deffendingPlate)
  73.                     {
  74.                         deffendingPlate = 0;
  75.                     }
  76.                 }
  77.             }
  78.  
  79.             if (trojanWarriors.Count > 0)
  80.             {
  81.                 Console.WriteLine
  82.                     ("The Trojans successfully destroyed the Spartan defense.");
  83.                 Console.Write("Warriors left: ");
  84.                 while (trojanWarriors.Count > 0)
  85.                 {
  86.                     if (trojanWarriors.Count==1)
  87.                     {
  88.                         Console.WriteLine(trojanWarriors.Pop());
  89.                         break;
  90.                     }
  91.                     Console.Write($"{trojanWarriors.Pop()}, ");
  92.                 }
  93.             }
  94.             else if (spartanPlates.Count > 0)
  95.             {
  96.                 Console.WriteLine
  97.                     ("The Spartans successfully repulsed the Trojan attack.");
  98.                 Console.Write("Plates left: ");
  99.                 while (spartanPlates.Count > 0)
  100.                 {
  101.                     if (spartanPlates.Count == 1)
  102.                     {
  103.                         Console.WriteLine(spartanPlates.Dequeue());
  104.                         break;
  105.                     }
  106.                     Console.Write($"{spartanPlates.Dequeue()}, ");
  107.                 }
  108.             }
  109.         }
  110.     }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement