Pagini recente » Cod sursa (job #464905) | Cod sursa (job #701763) | Cod sursa (job #2489873) | Cod sursa (job #1252547) | Cod sursa (job #234276)
Cod sursa(job #234276)
#include <stdio.h>
int A[16001],n,k;
int trans(int p)
{
int x=0,S,i;
for (i=1;i<=n;i++)
{
if (S+A[i]<=p) S+=A[i];
else S=A[i],x++;
}
return x;
}
int bsearch(int i,int j)
{
printf("%d %d\n",i,j);
if (j-i<=1) {
if (trans(i)==k) return i;
else return j;
}
int m = (i+j)/2;
if (trans(m)<=k) return bsearch(i,m);
else return bsearch(m,j);
}
int main()
{
FILE *in = fopen("transport.in","r");
FILE *out = fopen("transport.out","w");
int i,S=0,min=0;
fscanf(in,"%d%d",&n,&k);
for (i=1;i<=n;i++) {
fscanf(in,"%d",&A[i]);
S+=A[i];
if (A[i]>min) min = A[i];
}
fprintf(out,"%d",bsearch(min,S));
}