Advertisement
vvsvvs

Untitled

May 24th, 2022
923
146 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace MealPlan
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             Dictionary<string, int> mealsCalories = new Dictionary<string, int>
  13.         {
  14.             {"salad", 350},
  15.             {"soup", 490},
  16.             {"pasta", 680},
  17.             {"steak", 790}
  18.         };
  19.  
  20.             Queue<string> keysQueue = new Queue<string>(Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries));
  21.             Stack<int> valuesStack = new Stack<int>(Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse));
  22.  
  23.             int startMealsCount = keysQueue.Count;            
  24.  
  25.             while ((keysQueue.Count > 0) && (valuesStack.Count > 0))
  26.             {
  27.                 int currentCallories = valuesStack.Pop();
  28.                
  29.                 int currentMealCallories = mealsCalories[keysQueue.Peek()];
  30.  
  31.                 if (currentCallories - currentMealCallories >= 0)
  32.                 {
  33.                     currentCallories -= currentMealCallories;
  34.                     keysQueue.Dequeue();
  35.                     valuesStack.Push(currentCallories);                    
  36.                 }
  37.                 else if (valuesStack.Count > 0)
  38.                 {
  39.                     currentCallories -= currentMealCallories;
  40.                     currentCallories += valuesStack.Pop();
  41.                     if (currentCallories > 0)
  42.                     {
  43.                         valuesStack.Push(currentCallories);
  44.                         keysQueue.Dequeue();
  45.                     }
  46.  
  47.                     if (valuesStack.Count == 0)
  48.                     {
  49.                         keysQueue.Dequeue();
  50.                     }
  51.                 }
  52.                 else
  53.                 {
  54.                     if (valuesStack.Count == 0)
  55.                     {
  56.                         keysQueue.Dequeue();
  57.                     }
  58.                 }
  59.             }
  60.  
  61.             StringBuilder sb = new StringBuilder();
  62.  
  63.             if (valuesStack.Count > 0)
  64.             {
  65.                 sb.AppendLine($"John had {startMealsCount} meals.");
  66.                 sb.AppendLine($"For the next few days, he can eat {string.Join(", ", valuesStack)} calories.");
  67.             }
  68.             else
  69.             {
  70.                 sb.AppendLine($"John ate enough, he had {startMealsCount - keysQueue.Count} meals.");
  71.                 sb.AppendLine($"Meals left: {string.Join(", ", keysQueue)}.");
  72.  
  73.             }
  74.  
  75.             Console.WriteLine(sb.ToString().TrimEnd());
  76.         }
  77.     }
  78. }
  79.  
Advertisement
RAW Paste Data Copied
Advertisement