Pagini recente » Cod sursa (job #2450490) | Cod sursa (job #1435839) | Cod sursa (job #1337080) | Cod sursa (job #1631149) | Cod sursa (job #92490)
Cod sursa(job #92490)
#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 a, int b ) {
if (b-a > 1) {
if (t((a+b)/2) >= k)
return bs((a+b)/2,b); else
return bs(a,(a+b)/2-1);
} else {
if (t(a) <= k) return a; else return b;
}
}
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(0,f);
printf("%d\n",c);
return 0;
}