Pagini recente » Cod sursa (job #1463749) | Cod sursa (job #2212918) | Cod sursa (job #998300) | Cod sursa (job #2102263) | Cod sursa (job #1279083)
#include <stdio.h>
#include <stdlib.h>
int v[16000];
int main(){
FILE*fi,*fout;
int st,dr,i,k,n,m,con,s,min,max,max1;
fi=fopen("transport.in" ,"r");
fout=fopen("transport.out" ,"w");
fscanf(fi,"%d%d" ,&n,&k);
for(i=0;i<n;i++)
fscanf(fi,"%d" ,&v[i]);
st=1;
dr=256000000;
min=256000000;
while(dr-st>=1){
m=(st+dr)/2;
con=1;
s=max=0;
for(i=0;i<n;i++)
if(s+v[i]<=m)
s=s+v[i];
else{
con++;
if(s>max)
max=s;
s=v[i];
}
if(con<=k)
dr=m-1;
else
st=m+1;
}
m=(st+dr)/2;
con=1;
s=max1=0;
for(i=0;i<n;i++)
if(s+v[i]<=m)
s=s+v[i];
else{
con++;
if(s>max1)
max1=s;
s=v[i];
}
if(con>k)
max1=max;
if(max>max1)
max=max1;
fprintf(fout,"%d" ,max);
fclose(fi);
fclose(fout);
return 0;
}