Pagini recente » Cod sursa (job #1516001) | Cod sursa (job #2142622) | Cod sursa (job #2194605) | Cod sursa (job #2636179) | Cod sursa (job #2256981)
#include <stdio.h>
int nTrips;
int aSize;
int* ar;
int simulate(int n)
{
int taken = 0, cargo = 0, trip = 0;
while (taken < aSize)
{
if (ar[taken] + cargo <= n)
cargo += ar[taken++];
else
{
if (++trip >= nTrips)
return 0;
cargo = 0;
}
}
return 1;
}
int main()
{
freopen("transport.in", "rt", stdin);
freopen("transport.out", "wt", stdout);
scanf("%i%i", &aSize, &nTrips);
ar = malloc(sizeof(int)*aSize);
for(int i=0; i<aSize; i++)
scanf("%i", ar+i);
int loopVal = 16384 / 2;
int dif = loopVal >> 1;
while (dif > 0)
{
if (simulate(loopVal))
loopVal -= dif;
else
loopVal += dif;
dif>>=1;
}
if (simulate(loopVal-1))
loopVal--; else
if (!simulate(loopVal))
loopVal++;
printf("%i", loopVal-1);
free(ar);
}