7. Truck Tour - C# Advance exercises
Привет, колеги, може ли малко помощ по кода. Дава ми резултата, по условие, но в джъдж ми дава 0/100.
Ако някой може да помогне ще съм благодарен:
Ето условието и кода:
Problem 7. Truck Tour
https://pastebin.com/1n9qADm5?fbclid=IwAR3IVDzepshFl5-ywvcnw-iidY8Vl00go0mfiZYO4AmWrC8i8wZRPYV5a-8
Suppose there is a circle. There are N petrol pumps on that circle. Petrol pumps are numbered 0 to (N−1) (both inclusive). You have two pieces of information corresponding to each of the petrol pump: (1) the amount of petrol that particular petrol pump will give, and (2) the distance from that petrol pump to the next petrol pump.
Initially, you have a tank of infinite capacity carrying no petrol. You can start the tour at any of the petrol pumps. Calculate the first point from where the truck will be able to complete the circle. Consider that the truck will stop at each of the petrol pumps. The truck will move one kilometer for each liter of the petrol.
Input
- The first line will contain the value of N
- The next N lines will contain a pair of integers each, i.e. the amount of petrol that petrol pump will give and the distance between that petrol pump and the next petrol pump
Output
- An integer which will be the smallest index of the petrol pump from which we can start the tour
Constraints
- 1 ≤ N ≤ 1000001
- 1 ≤ Amount of petrol, Distance ≤ 1000000000
Examples
Input |
Output |
3 1 5 10 3 3 4 |
1 |
Много ти благодаря :)
Здравейте, извинявам се, че пиша във вашата тема, но просто не мога да отворя нова такава. Дано админите скоро да отстранят проблема.
Имам решение на задачата, което е 100/100- https://pastebin.com/BXMje8J3 , но е с цели три опашки. Опитвам се да я пренапиша, като използвам само една опашка, в която да държа три int числа: petrol, distance и index. Ще използвам същата логика, като в предходното ми решение. Затруднявам се със синтаксиса, тъй като още не сме учили опашки от масиви или от листове.
Ето до къде стигнах и не успявам да продължа по-нататъка:
int numbersOfPumps = int.Parse(Console.ReadLine());
var queuePetrolDistanceIndexx = new Queue<List<int>>();
for (int i = 0; i < numbersOfPumps; i++)
{
int[] input = Console.ReadLine().Split().Select(int.Parse).ToArray();
int petrolInThePump = input[0];
int distanceBetwenTheNext = input[1];
int indexx = i;
queuePetrolDistanceIndexx.Enqueue(new List<int>());
Опашките нямат нещо подобно на InsertRange(), като при листовете, нито мога да достъпя листа в опашката, както при речника от листове можех. Моля за помощ, как да кача и трите числа заедно в една опашка, вместо да използвам три отделни опашки.
Здравей, Elena123456. Опашката е достатъчно да събира в себе си масив от стрингове var queue = new Queue<string[]>();, след това пъхаш три сплитнати елемента от конзолата var infoForPetrol = Console.ReadLine().Split(); напр. 5 2 7 и за да имаш достъп до тези три елемента използваш
foreach (var item in queue){
if(int.Parse(item[0]) > int.Parse(item[1]))
var neededIndexIs = item[2];}
Ето и линк към моето 80/100 решение: https://pastebin.com/Rshmb9F8 , което е с една опашка и три елемента вътре:). Надявам се и на мен някой да помогне за останалите 20/100. Упс,...видях си грешката.
Беше if (int.Parse(item[0]) >= int.Parse(item[1])) , а сега е
if (int.Parse(item[0]) >= int.Parse(item[1]) || sumPetrol > sumKmToPomp)
и вече е 100/100.