Pagini recente » Cod sursa (job #1502829) | Cod sursa (job #1791663) | Cod sursa (job #3136009) | Cod sursa (job #1180274) | Cod sursa (job #129887)
Cod sursa(job #129887)
#include<stdio.h>
#define N 16010
int v[N];
int main(){
int c,n,i,k,s,a,b,u,min=-N;
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1;i<=n;++i){
scanf("%d",&v[i]);
if (min<v[i])
min=v[i];
s+=v[i];
}
a=1;
b=s;
while (b-a>1){
c=(a+b)/2+(a+b)%2;
s=0;
u=1;
for (i=1;i<=n;++i){
s=s+v[i];
if (s>c){
++u;
s=v[i];
}
}
if (u>k || c<min)
a=(a+b)/2+(a+b)%2;
else
b=(a+b)/2+(a+b)%2;
}
printf("%d",(a+b)/2+(a+b)%2);
return 0;
}