Pagini recente » Cod sursa (job #630465) | Cod sursa (job #2941997) | Cod sursa (job #1799930) | Cod sursa (job #1734657) | Cod sursa (job #1803636)
#include <stdio.h>
#include <stdlib.h>
int v[16000];
int main()
{
FILE*fin,*fout;
int n,k,min=0,max=0,c,b,nr,s,i,cc=-2;
fin=fopen("transport.in","r");
fout=fopen("transport.out","w");
fscanf(fin,"%d%d",&n,&k);
for(i=0;i<n;i++){
fscanf(fin,"%d",&v[i]);
if(v[i]>min) min=v[i];
max+=v[i];
}
c=-1;
b=(min+max)/2;
while(min<max && c!=cc){
c=b;
nr=1;s=0;
for(i=0;i<n;i++){
if(s+v[i]<=b) s+=v[i];
else{ nr++;s=v[i];}
}
if(nr>k) {min=b;b=(b+max)/2;}
else {max=b;b=(min+b)/2;}
cc=b;
}
fprintf(fout,"%d",max);
fclose(fout);
fclose(fin);
return 0;
}