Pagini recente » Cod sursa (job #215495) | Cod sursa (job #343677) | Cod sursa (job #2173422)
#include <stdio.h>
#define SIZE 16000
#define NMAX 256000000
static int v[SIZE];
int main(void)
{
int n, k, i, uk, s, mid, pos, cap, ok;
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
scanf("%d %d", &n, &k);
for (i = 0; i < n; i += scanf("%d", &v[i]))
;
for (mid = 1 << 28, pos = NMAX; mid; mid >>= 1) {
if (mid <= pos) {
for (ok = 1, cap = pos - mid, uk = k - 1, s = 0; ok && s < n; s++) {
if (cap - v[s] >= 0) {
cap -= v[s];
} else if (uk > 0) {
cap = pos - mid - v[s];
uk--;
} else {
ok = 0;
}
}
if (ok) {
pos -= mid;
}
}
}
printf("%d", pos);
return 0;
}