[Advanced C# Exercises] Stacks and Queues - 06. Truck Tour
Здравейте Колеги, някакви препоръки можете ли да дадете за тази задачка. Много дълго време я мъча, но повече от 20 точки не взимам.
Здравейте Колеги, някакви препоръки можете ли да дадете за тази задачка. Много дълго време я мъча, но повече от 20 точки не взимам.
Работи 100/100 решение с опашка , кратко и ясно.
namespace ex7
{
internal class Program
{
static void Main(string[] args)
{
int petrolPumps = int.Parse(Console.ReadLine());
Queue<string> data = new Queue<string>();
for (int i = 0; i < petrolPumps; i++) // initializing the pumps data
{
string pumpsData = Console.ReadLine();
data.Enqueue(pumpsData);
}
int fuel = 0; // al the fuel that we have initially
int bestIndex = 0; // the smallest one
bool isBestForNow = true; // if the current pump is best for now
for (int i = 0; i < petrolPumps; i++)
{
int[] pumpsDataArgs = data.Peek().Split().Select(int.Parse).ToArray();
int currentFuelLoad = pumpsDataArgs[0];
int currentKmToRide = pumpsDataArgs[1];
if (fuel + currentFuelLoad < currentKmToRide)
{
string currentNotSatisfyingPump = data.Dequeue();
data.Enqueue(currentNotSatisfyingPump);
fuel = 0;
bestIndex = 0;
isBestForNow = false;
}
else
{
if (isBestForNow == false)
bestIndex = i;
isBestForNow = true;
fuel += currentFuelLoad - currentKmToRide;
string currentSatisfyuingPump = data.Dequeue(); // pump that satisfy the km need to run with the fuel that we have
data.Enqueue(currentSatisfyuingPump);// we add it at the end of our queue
}
}
Console.WriteLine(bestIndex);
}
}
}