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