Advertisement
Guest User

Key revolver

a guest
Mar 16th, 2020
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.81 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace _11._Key_Revolver
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             var bulletPrice = int.Parse(Console.ReadLine());
  12.             var sizeGunBarrel = int.Parse(Console.ReadLine());
  13.             var bullets = Console.ReadLine().Split().Select(int.Parse).ToArray();
  14.             var locks = Console.ReadLine().Split().Select(int.Parse).ToArray();
  15.             var valueOfIntellegence = int.Parse(Console.ReadLine());
  16.  
  17.             var bulletStack = new Stack<int>(bullets); //going through the bullet back-to-front. In this case use LIFO
  18.             var locksQueue = new Queue<int>(locks); //shoot the lock from front-to-back. In this case use FIFO
  19.             var usedBullets = 0; //it is for counting of used bullets
  20.             var barrelCount = 0; //it is for checking when Sam need to reload
  21.             while (true)
  22.             {
  23.                 if (bulletStack.Any() && locksQueue.Any())
  24.                 {
  25.                     if (bulletStack.Peek() <= locksQueue.Peek()) //First Case if the bullet <= lock
  26.                     {
  27.                         barrelCount++;
  28.                         usedBullets++;
  29.                         Console.WriteLine("Bang!");
  30.                         locksQueue.Dequeue();  //remove the lock
  31.                         bulletStack.Pop(); //remove the bullet
  32.                         if (barrelCount == sizeGunBarrel && bulletStack.Any())
  33.                         {
  34.                             Console.WriteLine("Reloading!");
  35.                             barrelCount = 0;
  36.                         }
  37.                     }
  38.                     else if (bulletStack.Any())
  39.                     {
  40.                         usedBullets++;
  41.                         barrelCount++;
  42.                         Console.WriteLine("Ping!");
  43.                         bulletStack.Pop();
  44.                     }
  45.  
  46.                 }
  47.                 else if (!bulletStack.Any() && locksQueue.Any())
  48.                 {
  49.                     Console.WriteLine($"Couldn't get through. Locks left: {locksQueue.Count}");
  50.                     break;
  51.                 }
  52.                 else if (bulletStack.Any() && !locksQueue.Any())
  53.                 {
  54.                     var earn = valueOfIntellegence - (usedBullets * bulletPrice);
  55.                     Console.WriteLine($"{bulletStack.Count} bullets left. Earned ${earn}");
  56.                     break;
  57.                 }
  58.                 else if (!bulletStack.Any() && !locksQueue.Any())
  59.                 {
  60.                     var earn = valueOfIntellegence - (usedBullets * bulletPrice);
  61.                     Console.WriteLine($"{bulletStack.Count} bullets left. Earned ${earn}");
  62.                     break;
  63.                 }
  64.             }
  65.         }
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement