Pagini recente » Cod sursa (job #1924820) | Cod sursa (job #2418755) | Cod sursa (job #1115244) | Cod sursa (job #2502854) | Cod sursa (job #875038)
Cod sursa(job #875038)
#include<stdio.h>
int main(){
long long n,k,i,j,max=0,m,x,s=0,t,aux,sp,sg,ind,fn,min,d1=256000001;
int a[16001];
FILE *fin=fopen("transport.in","r"),*fout=fopen("transport.out","w");
fscanf(fin,"%lld%lld",&n,&k);
for(i=1;i<=n;i++){
fscanf(fin,"%d",&a[i]);
if(a[i]>max)max=a[i];
s+=a[i];
}
ind=max;
fn=s;
sp=0;
do{
x=fn-ind;
x/=2;
if(x==0) sp=1;
x+=ind;
i=1;
t=0;
do{
sg=0;
s=0;
s+=a[i];
i++;
do{
if((s+a[i])<=x){
s+=a[i];
i++;
}
else{
sg=1;
t++;
s=0;
}
}while((sg==0)&&(i<=n));
if((s>0)&&(t<=x))
t++;
}while(i<=n);
if(t<=k) {
if(x<=d1) d1=x;
fn=x;
}
else ind=x;
}while(sp==0);
fprintf(fout,"%lld",d1);
return 0;
}