Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace Bakery
- {
- class Program
- {
- static void Main(string[] args)
- {
- List<decimal> water = Console.ReadLine().Split().Select(decimal.Parse).ToList();
- List<decimal> flour = Console.ReadLine().Split().Select(decimal.Parse).ToList();
- List<decimal> nums = new List<decimal>();
- nums.AddRange(water);
- nums.AddRange(flour);
- List<decimal> waterLeft = new List<decimal>();
- List<decimal> flourLeft = new List<decimal>();
- int croissantCount = 0;
- int muffinCount = 0;
- int baguetteCount = 0;
- int bagelCount = 0;
- while (true)
- {
- decimal firstN = nums[0];
- decimal lastN = nums[nums.Count - 1];
- decimal waterPercentage = (firstN * 100) / (firstN + lastN);
- decimal flourPercentage = 100 - waterPercentage;
- if (waterPercentage == 50)
- { // croissant
- croissantCount++;
- nums.RemoveAt(0);
- nums.RemoveAt(nums.Count - 1);
- }
- else if (waterPercentage == 40)
- { // muffin
- muffinCount++;
- nums.RemoveAt(0);
- nums.RemoveAt(nums.Count - 1);
- }
- else if (waterPercentage == 30)
- { // baguette
- baguetteCount++;
- nums.RemoveAt(0);
- nums.RemoveAt(nums.Count - 1);
- }
- else if (waterPercentage == 20)
- { // bagel
- bagelCount++;
- nums.RemoveAt(0);
- nums.RemoveAt(nums.Count - 1);
- }
- else
- {
- decimal removeDifference = firstN - lastN;
- removeDifference = Math.Abs(removeDifference);
- if (firstN > lastN)
- { // water bigger
- firstN -= removeDifference;
- croissantCount++;
- waterLeft.Add(removeDifference);
- }
- else if (lastN > firstN)
- { // flour bigger
- lastN -= removeDifference;
- croissantCount++;
- flourLeft.Add(removeDifference);
- }
- nums.RemoveAt(0);
- nums.RemoveAt(nums.Count - 1);
- }
- if (nums.Count == 1)
- {
- if (flour.Count > water.Count)
- {
- flourLeft.Add(nums[0]);
- break;
- }
- if (water.Count > flour.Count)
- {
- waterLeft.Add(nums[0]);
- break;
- }
- }
- else if (nums.Count == 0)
- {
- break;
- }
- }
- SortedList<string, int> counts = new SortedList<string, int>();
- bool croissantZero = biggerThanZero(croissantCount);
- if (croissantZero)
- {
- counts.Add("Croissant", croissantCount);
- }
- bool muffinZero = biggerThanZero(muffinCount);
- if (muffinZero)
- {
- counts.Add("Muffin", muffinCount);
- }
- bool baguetteZero = biggerThanZero(baguetteCount);
- if (baguetteZero)
- {
- counts.Add("Baguette", baguetteCount);
- }
- bool bagelZero = biggerThanZero(bagelCount);
- if (bagelZero)
- {
- counts.Add("Bagel", bagelCount);
- }
- printProducts(counts);
- if (waterLeft.Count > 0)
- {
- Console.Write("Water left: ");
- Console.Write(String.Join(", ", waterLeft));
- }
- else
- {
- Console.WriteLine("Water left: None");
- }
- if (flourLeft.Count > 0)
- {
- Console.Write("Flour left: ");
- Console.Write(string.Join(", ", flourLeft));
- }
- else
- {
- Console.WriteLine("Flour left: None");
- }
- }
- public static bool biggerThanZero(int n)
- {
- if (n > 0)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- public static void printProducts(SortedList<string, int> counts)
- {
- foreach (KeyValuePair<string, int> count in counts.OrderByDescending(key => key.Value))
- {
- Console.WriteLine($"{count.Key}: {count.Value}");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement