Cooking Factory
Здравейте, получавам 90/100, а не мога да си открия грешката. Ако може помощ.
The George`s Cooking factory got another order. But this time you are tasked to bake
the best Bread for a special party.
Until you receive a command "Bake it!" you will be receiving strings, the batches of bread. Each string is an array of numbers, split by "#". Each element is a bread and the number represent its quality.
You should select the batch with the highest total quality of bread.
If there are several batches with same total quality select the batch with the greater average quality.
If there are several batches with same total quality and average quality, take the one with the fewest elements (length).
Input / Constraints
- Until you receive a command "Bake it!" you will be receiving strings, the batches of bread. Each string is an array of numbers, split by "#". Each element is a bread and the number represent its quality.
- Each batch will have from 1 to 10 elements.
- Bread quality is an integer in the range [-100, 100].
Output
- After you receive the last command "Bake It!" you should print the following message:
"Best Batch quality: {bestTotalQuality}"
"{bread batch, joined by space}"
Examples
Input |
Output |
Comments |
5#4#10#-2 10#5#2#3#2 Bake It! |
Best Batch quality: 22 10 5 2 3 2 |
We receive 2 batches, but the second is printed, because its total quality is better. |
Input |
Output |
Comments |
5#3#2 10#2#-2#1#-1 4#2#1 Bake It! |
Best Batch quality: 10 5 3 2 |
We receive 3 sequences. Both 1 and 2 have same total quality -> 10, but the first is printed, because its has better average quality 3.(333). |
using System;
namespace Cooking_Factory
{
class Program
{
static void Main(string[] args)
{
string command = Console.ReadLine();
double highestQuality = 0;
double maxValue = int.MinValue;
int maxElements = int.MinValue;
double maxAverage = int.MinValue;
string[] numbers = new string[10];
while(command != "Bake It!")
{
string[] convert = command.Split("#");
for (int i = 0; i < convert.Length; i++)
{
int number = int.Parse(convert[i]);
highestQuality += number;
}
double averageQuality = highestQuality / convert.Length;
if (highestQuality > maxValue)
{
maxValue = highestQuality;
numbers = convert;
}
if (averageQuality > maxAverage)
{
if (maxValue == highestQuality)
{
maxAverage = averageQuality;
numbers = convert;
}
}
if (maxValue == highestQuality && averageQuality == maxAverage && convert.Length > maxElements)
{
maxElements = convert.Length;
numbers = convert;
}
highestQuality = 0;
command = Console.ReadLine();
}
int total = 0;
for (int i = 0; i < numbers.Length; i++)
{
int number = int.Parse(numbers[i]);
total += number;
}
Console.WriteLine($"Best Batch quality: {total}");
Console.WriteLine(string.Join(" ", numbers));
}
}
}