Pagini recente » Cod sursa (job #2524693) | Cod sursa (job #2833381) | Cod sursa (job #1470461) | Cod sursa (job #1151437) | Cod sursa (job #2542946)
#include <iostream>
#include <cstdio>
#define NMAX 16000
#define MAX 256000000
using namespace std;
int n, k;
int v[NMAX + 5];
int ntr(int cap) {
int cs = 0, ans = 0;
for(int i = 1; i <= n; i++) {
if(cs + v[i] <= cap)
cs += v[i];
else {
cs = v[i];
ans++;
}
}
return ans + 1;
}
int cb(int st, int dr) {
int mij, last = MAX;
while(st <= dr) {
mij = (st + dr) / 2;
if(ntr(mij) <= k) {
last = mij;
dr = mij - 1;
}
else
st = mij + 1;
}
return last;
}
int main() {
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
scanf("%d %d", &n, &k);
for(int i = 1; i <= n; i++)
scanf("%d", &v[i]);
printf("%d", cb(1, MAX));
return 0;
}