Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.06 KB | None | 0 0
  1. namespace Problem1
  2. {
  3.     using System;
  4.     using System.Linq;
  5.     using System.Collections;
  6.     using System.Collections.Generic;
  7.  
  8.     class Program
  9.     {
  10.         static void Main()
  11.         {
  12.             var liquids = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
  13.             var items = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
  14.  
  15.             Queue<int> liquidQueue = new Queue<int>(liquids);
  16.             Stack<int> itemsStack = new Stack<int>(items);
  17.             Dictionary<string, int> materials = new Dictionary<string, int>();
  18.             materials["Aluminium"] = 0;
  19.             materials["Carbon fiber"] = 0;
  20.             materials["Glass"] = 0;
  21.             materials["Lithium"] = 0;
  22.            
  23.  
  24.             while (liquidQueue.Count > 0 || itemsStack.Count > 0)
  25.             {
  26.                 int liquid = -1;
  27.                 int item = -1;
  28.                 if (liquidQueue.Count > 0)
  29.                 {
  30.                     liquid = liquidQueue.Peek();
  31.                 }
  32.                 if (itemsStack.Count > 0)
  33.                 {
  34.                     item = itemsStack.Peek();
  35.                 }
  36.  
  37.                 if (liquid == -1 || item == -1)
  38.                 {
  39.                     break;
  40.                 }
  41.                
  42.                 if (liquid + item == 25)
  43.                 {
  44.                     materials["Glass"]++;
  45.                     RemoveLiquidAndItem(liquidQueue, itemsStack);
  46.                     continue;
  47.                 }
  48.                 else if (liquid + item == 50)
  49.                 {
  50.                     materials["Aluminium"]++;
  51.                     RemoveLiquidAndItem(liquidQueue, itemsStack);
  52.                     continue;
  53.                 }
  54.                 else if (liquid + item == 75)
  55.                 {
  56.                     materials["Lithium"]++;
  57.                     RemoveLiquidAndItem(liquidQueue, itemsStack);
  58.                     continue;
  59.                 }
  60.                 else if (liquid + item == 100)
  61.                 {
  62.                     materials["Carbon fiber"]++;
  63.                     RemoveLiquidAndItem(liquidQueue, itemsStack);
  64.                     continue;
  65.                 }
  66.  
  67.                 else
  68.                 {
  69.                     if (liquidQueue.Count == 0)
  70.                     {
  71.                         break;
  72.                     }
  73.                     if (itemsStack.Count == 0)
  74.                     {
  75.                         break;
  76.                     }
  77.                     liquidQueue.Dequeue();
  78.                     item += 3;
  79.                     itemsStack.Pop();
  80.                     itemsStack.Push(item);
  81.                 }
  82.             }
  83.  
  84.             bool succeeded = true;
  85.             foreach (var item in materials)
  86.             {
  87.                 if (item.Value == 0)
  88.                 {
  89.                     succeeded = false;
  90.                     break;
  91.                 }
  92.             }
  93.  
  94.             if (!succeeded)
  95.             {
  96.                 Console.WriteLine("Ugh, what a pity! You didn't have enough materials to build the spaceship.");
  97.  
  98.                 if (liquidQueue.Count == 0)
  99.                 {
  100.                     Console.WriteLine($"Liquids left: none");
  101.                 }
  102.                 else
  103.                 {
  104.                     Console.Write("Liquids left: ");
  105.                     Console.WriteLine(string.Join(", ", liquidQueue));
  106.                 }
  107.  
  108.                 if (itemsStack.Count == 0)
  109.                 {
  110.                     Console.WriteLine($"Physical items left: none");
  111.                 }
  112.                 else
  113.                 {
  114.                     Console.Write("Physical items left: ");
  115.                     Console.WriteLine(string.Join(", ", itemsStack));
  116.                 }
  117.  
  118.                 PrintMaterials(materials);
  119.             }
  120.             else
  121.             {
  122.                 Console.WriteLine("Wohoo! You succeeded in building the spaceship!");
  123.                
  124.                 if (liquidQueue.Count == 0)
  125.                 {
  126.                     Console.WriteLine($"Liquids left: none");
  127.                 }
  128.                 else
  129.                 {
  130.                     Console.Write("Liquids left: ");
  131.                     Console.WriteLine(string.Join(", ", liquidQueue));
  132.                 }
  133.  
  134.                 if (itemsStack.Count == 0)
  135.                 {
  136.                     Console.WriteLine($"Physical items left: none");
  137.                 }
  138.                 else
  139.                 {
  140.                     Console.Write("Physical items left: ");
  141.                     Console.WriteLine(string.Join(", ", itemsStack));
  142.                 }
  143.  
  144.                 PrintMaterials(materials);
  145.             }
  146.         }
  147.  
  148.         private static void PrintMaterials(Dictionary<string, int> materials)
  149.         {
  150.             foreach (var item in materials)
  151.             {
  152.                 Console.WriteLine($"{item.Key}: {item.Value}");
  153.             }
  154.         }
  155.  
  156.         private static void RemoveLiquidAndItem(Queue<int> liquidQueue, Stack<int> itemsStack)
  157.         {
  158.             liquidQueue.Dequeue();
  159.             itemsStack.Pop();
  160.         }
  161.     }
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement