Pagini recente » Cod sursa (job #273784) | Cod sursa (job #1761809) | Cod sursa (job #1995058) | Cod sursa (job #321251) | Cod sursa (job #2065700)
#include <stdio.h>
#include <stdlib.h>
int n,k;
int a[16002];
int Verif(int cap)
{ int i,summax=0,nrk=0;
for(i=1;i<=n;i++)
if(a[i]>cap) return 0;
else if(summax+a[i]>cap)
{nrk++;summax=a[i];
if(nrk==k+1) return 0;}
else summax+=a[i];
nrk++;
if(nrk>k) return 0;
return 1;
}
int Cautbin()
{ int st=1;
int dr=256000000,mij,nr;
while(st<=dr)
{ mij=st+(dr-st)/2;
nr=Verif(mij);
if(nr==1) dr=mij-1;
else if(nr==0) st=mij+1;
}
return st;
}
int main()
{ int i;
FILE *f,*g;
f=fopen("transport.in","r");
g=fopen("transport.out","w");
fscanf(f,"%d %d",&n,&k);
for(i=1;i<=n;i++)
fscanf(f,"%d",&a[i]);
fprintf(g,"%d",Cautbin());
return 0;
}