Pagini recente » Cod sursa (job #671556) | Cod sursa (job #323925) | Cod sursa (job #710941) | Cod sursa (job #2891346) | Cod sursa (job #1984984)
#include <stdio.h>
int v[16001];
int main () {
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
int n, k, i, st, dr, mij, t, poz, max, min, s, x;
scanf("%d%d", &n, &k);
min=16001;
max=0;
for(i=1; i<=n; i++) {
scanf("%d", &v[i]);
if(min > v[i])
min=v[i];
max+=v[i];
}
st=min;
dr=max;
while(st<=dr) {
mij=(st+dr)/2;
s=0;
t=1;
for(i=1; i<=n; i++) {
if(s+v[i]<=mij) {
s+=v[i];
}
else {
t++;
s=v[i];
}
}
i--;
if(t>k || i!=n)
st=mij+1;
else if(t<=k && i==n) {
dr=mij-1;
poz=mij;
}
}
printf("%d", poz);
return 0;
}