# Find the status of the passengers and safari cars after k units of time…[Cprogm]FTC

A Zoo consists of a lion museum and a zoo for safari riding. There are many passengers and n single-passenger cars. Passengers wander around the museum for a while and then line up at the zoo gate to take a ride in a safari car.

Note that each passenger is allowed for one ride only.

When a car is available, it loads the one passenger it can hold and rides the zoo for a specific amount of time say p

If all the n cars are out riding passengers around, then a passenger who wants a ride waits.

if a car is ready to load but there are no waiting passengers, then the car waits.

After every r units of time one passenger from the museum gets ready to take the safari car ride.

Assume that Zoo is open for k units of time. Can you find the status of the passengers and safari cars after k units of time.

Input:
First line contains an integer N number of test cases.
Each of the following N lines contains input data, separated by single space, for different test cases in the given order:

No. of Safari Cars
No. passengers in Museum at time zero
No. of passengers at zoo gate ready for ride at time zero.

p (When a car is available, it loads the one passenger it can hold and   rides the zoo for a specific amount of time say p. ),

r (After every r units of time one passenger from the museum gets ready to  take the safari car ride.)

k (Zoo is open for k units of time.)

Output:
Each of n lines in the output has four integers separated by as space representing :

No. of cars waiting at the zoo gate
No. of passengers completed the zoo ride
No. of passengers wandering in the museum
No. of passengers still waiting to take a ride respectively

#include <stdio.h>
#define min(A,B) ((A)>(B)?(B):(A))
#define max(A,B) ((A)>(B)?(A):(B))
int main(void)
{
int testCount;
scanf("%d", &testCount);
while (testCount--){
int cars, wander, ready, p, r, k;
int doneCount, ridingCount, carsWaiting;
int carArrives[50];
scanf("%d %d %d %d %d %d", &cars, &wander, &ready, &p, &r, &k);

if (cars == 0){
continue;
}
doneCount = ridingCount = 0;
for (i = 0; i < cars; i++)
carArrives[i] = 0;

for (i = 0; i < ready; i++)

for (i = ready; i < totalPeople; i++)

nextCar = 0;

for (i = 0; i < totalPeople; i++){
break;
nextCar = (nextCar+1) % cars;
if (readyTime + p <= k)
doneCount++;
ridingCount++;
}
carsWaiting = 0;

for (i = 0; i < cars; i++)
if (carArrives[i] <= k)
carsWaiting++;
printf("%d %d %d %d\n", carsWaiting, doneCount, max(0, wander - k/r), ready + min(wander, k/r) - doneCount - ridingCount);
}
return 0;
}

INPUT_1:
3
4  33  6  5  2  14
6  21  4  2  2  18
5  17  4  8  5  2

OUTPUT:
0  8  26  1
5  12  12  0
3  6  13  0

INPUT_2:
2
17  165  15  9  7  12
21  152  11  7  5  10

OUTPUT:
16  15  164  0
19  11  150  0

ILLUSTRATION