Pagini recente » Cod sursa (job #839418) | Cod sursa (job #2815239) | Cod sursa (job #3147197) | Cod sursa (job #2701569) | Cod sursa (job #2084876)
#include <stdio.h>
const int MAX_N = 16000;
int v[MAX_N];
int GetNumberOfCarriages(int *v, int n, int capacity)
{
int s = 0;
int n_carriages = 0;
for(int i = 0; i < n; i++)
{
if(s + v[i] <= capacity)
s += v[i];
else
{
s = v[i];
n_carriages ++;
}
}
if(s != 0) n_carriages ++;
return n_carriages;
}
int main()
{
FILE *fin = fopen("transport.in", "r"),
*fout = fopen("transport.out", "w");
int n, k;
fscanf(fin, "%d %d", &n, &k);
for(int i = 0; i < n; i++)
fscanf(fin, "%d", &v[i]);
int step = 1 << 28;
int r = 0;
printf("%d\n", GetNumberOfCarriages(v, n, 8));
while(step != 0)
{
if(GetNumberOfCarriages(v, n, r + step) > k)
r += step;
step /= 2;
}
r++;
fprintf(fout, "%d", r);
fcloseall();
return 0;
}