Pagini recente » Cod sursa (job #1281839) | Cod sursa (job #620540) | Cod sursa (job #87789) | Cod sursa (job #2904130) | Cod sursa (job #2074401)
#include <stdio.h>
#define L 13
int v[16000];
int main()
{
FILE *fin, *fout;
int n, k;
int sumall, sum, i, max;
int pas, r;
int trans;
fin = fopen("transport.in", "r");
fscanf(fin, "%d%d", &n, &k);
sumall = 0;
max = 0;
for (i = 0; i < n; i++) {
fscanf(fin, "%d", &v[i]);
if (v[i] > max)
max = v[i];
sumall += v[i];
}
fclose(fin);
pas = 1 << L;
r = 0;
while (pas != 0) {
if (r + pas <= sumall) {
trans = 0;
i = 0;
sum = 0;
while (i < n && trans <= k + 1) {
if (sum + v[i] <= r + pas) {
sum += v[i];
} else {
trans++;
sum = v[i];
}
i++;
}
if (sum > 0) {
trans++;
}
if (trans > k)
r += pas;
}
pas >>= 1;
}
r++;
if (r < max)
r = max;
fout = fopen("transport.out", "w");
fprintf(fout, "%d", r);
fclose(fout);
return 0;
}