Pagini recente » Cod sursa (job #3244680) | Cod sursa (job #1923112) | Cod sursa (job #2982450) | Cod sursa (job #1629739) | Cod sursa (job #92485)
Cod sursa(job #92485)
#include <cstdio>
const int N = 16000;
int n,k;
int a[N];
int s,f;
int t ( int c ) {
if (c < s) return 0x3f3f3f3f;
int tr = 1, free = c;
for (int i = 0; i < n; ++i) {
if (free >= a[i]) {
free -= a[i];
} else {
++tr;
free = c;
--i;
}
}
if (free == c) --tr;
return tr;
}
int bs() {
int step,i;
for (step = 1; step < f; step <<= 1);
for (i = 0; step; step >>= 1)
if (i + step < f && t(i + step) >= k)
i += step;
return i;
}
int main() {
freopen("transport.in","rt",stdin);
freopen("transport.out","wt",stdout);
scanf("%d %d",&n,&k);
s = -0x3f3f3f3f;
f = 0;
for (int i = 0; i<n; ++i) {
scanf("%d",&a[i]);
if (s < a[i]) s = a[i];
f += a[i];
}
int c = bs();
for (; c > s && t(c-1) <= k; --c);
printf("%d\n",c);
return 0;
}