Pagini recente » Cod sursa (job #212555) | Cod sursa (job #2688167) | Cod sursa (job #439143) | Cod sursa (job #1892194) | Cod sursa (job #2542957)
#include <iostream>
#include <cstdio>
#define NMAX 16000
#define MAX 256000000
using namespace std;
int n, k;
long long v[NMAX + 5];
long long ntr(long long cap) {
long long 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;
}
long long cb(long long st, long dr) {
long long 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);
long long maxim = 0;
scanf("%d %d", &n, &k);
for(int i = 1; i <= n; i++) {
scanf("%lld", &v[i]);
maxim = max(maxim, v[i]);
}
printf("%lld", cb(maxim, MAX + 5));
return 0;
}