Pagini recente » Cod sursa (job #3175283) | Cod sursa (job #676273) | Cod sursa (job #1143616) | Cod sursa (job #656272) | Cod sursa (job #183267)
Cod sursa(job #183267)
#include<stdio.h>
#define M 16002
long n,i,l,r,a[M],k,mij,t;
long max(long,long);
long transp(long);
int main()
{
freopen("transport.in","r",stdin);
scanf("%ld %ld",&n,&k);
for (i=1;i<=n;i++)
{
scanf("%ld",&a[i]);
l=max(l,a[i]);
r+=a[i];
}
while(l<r)
{
mij=(l+r)/2;
t=transp(mij);
if (t<=k) r=mij;
else l=mij+1;
}
freopen("transport.out","w",stdout);
printf("%ld\n",l);
return 0;
}
long max(long a,long b)
{
if (a>b) return a;
else return b;
}
long transp(long mij)
{long i,rts=0,t=1;
for (i=1;i<=n;i++)
if (a[i]+rts<=mij)
rts+=a[i];
else t++,rts=a[i];
return t;
}