Pagini recente » Cod sursa (job #1605714) | Cod sursa (job #2058682) | Cod sursa (job #2575541) | Cod sursa (job #1188960) | Cod sursa (job #1254495)
#include<stdio.h>
const int NMAX = 16010;
int n, k, vol[NMAX];
bool ok (int cap) {
int i, s, cnt;
s = 0;
cnt = 1;
for(i = 1; i <= n; ++ i) {
s += vol[i];
if(s > cap)
s = vol[i],
++ cnt;
}
return cnt <= k;
}
int bs () {
int left = 1, right = 16000 * NMAX, mid, last;
while(left <= right) {
mid = (left + right) / 2;
if(ok(mid))
last = mid,
right = mid - 1;
else
left = mid + 1;
}
return last;
}
int main() {
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
int i;
scanf("%d%d", &n, &k);
for(i = 1; i <= n; ++ i)
scanf("%d", &vol[i]);
printf("%d\n", bs());
return 0;
}