Pagini recente » Cod sursa (job #2451566) | Cod sursa (job #346067) | Cod sursa (job #2522499) | Autentificare | Cod sursa (job #509431)
Cod sursa(job #509431)
#include <cstdio>
const int N = 16005;
int n, a[N], k;
int rez(int g) {
int i, nr = 1, s = 0;
for( i = 1; i <= n; ++i) {
s += a[i];
if( s > g)
++nr, s = a[i];
}
return nr;
}
int cauta(int p, int u) {
int m = (p + u) / 2;
if( p == u && rez(m) <= k)
return p;
if(p > u )
return p;
// printf("%d %d %d %d\n",p,m,u,rez(m));
if( rez(m) <= k)
return cauta(p, m - 1);
else
return cauta(m + 1, u);
}
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", &a[i]), a[n + 1] += a[i];
printf("%d\n", cauta(1,a[n + 1]));
return 0;
}