Advertisement
simonradev

SecondNature

Apr 16th, 2017
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.42 KB | None | 0 0
  1. namespace _01.SecondNature
  2. {
  3.     using System;
  4.     using System.Collections.Generic;
  5.     using System.Linq;
  6.     using System.Text;
  7.    
  8.     public class Startup
  9.     {
  10.         public static void Main()
  11.         {
  12.             List<int> secondNatureFlowers = secondNatureFlowers = new List<int>();
  13.  
  14.             Queue<int> flowers = flowers = new Queue<int>(ReadSequenceFromConsole());
  15.             Stack<int> buckets = buckets = new Stack<int>(ReadSequenceFromConsole());
  16.  
  17.             while (flowers.Count > 0 && buckets.Count > 0)
  18.             {
  19.                 int currFlower = flowers.Dequeue();
  20.                 int currBucket = buckets.Pop();
  21.  
  22.                 if (currFlower == currBucket)
  23.                 {
  24.                     secondNatureFlowers.Add(currFlower);
  25.                 }
  26.                 else if (currFlower > currBucket)
  27.                 {
  28.                     currFlower -= currBucket;
  29.                     flowers.Enqueue(currFlower);
  30.                 }
  31.                 else if (currFlower < currBucket)
  32.                 {
  33.                     int remainingWater = currBucket - currFlower;
  34.  
  35.                     int waterToAdd = 0;
  36.                     if (buckets.Count == 0)
  37.                     {
  38.                         waterToAdd = remainingWater;
  39.                     }
  40.                     else
  41.                     {
  42.                         waterToAdd = buckets.Pop() + remainingWater;
  43.                     }
  44.  
  45.                     buckets.Push(waterToAdd);
  46.                 }
  47.             }
  48.  
  49.             string leftOvers = flowers.Count != 0 ?
  50.                                 JoinString(flowers) :
  51.                                 JoinString(buckets);
  52.             string specialFlowersResult = secondNatureFlowers.Count != 0 ?
  53.                                             JoinString(secondNatureFlowers) :
  54.                                             "None";
  55.  
  56.             StringBuilder result = new StringBuilder();
  57.             result.AppendLine(leftOvers);
  58.             result.AppendLine(specialFlowersResult);
  59.  
  60.             Console.Write(result);
  61.         }
  62.  
  63.         private static string JoinString(IEnumerable<int> toJoin)
  64.         {
  65.             return string.Join(" ", toJoin);
  66.         }
  67.  
  68.         private static IEnumerable<int> ReadSequenceFromConsole()
  69.         {
  70.             return Console.ReadLine().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse);
  71.         }
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement