Pagini recente » Solutia problemei shoturi | Cod sursa (job #561289) | Cod sursa (job #2693514) | Cod sursa (job #2149015) | Cod sursa (job #496051)
Cod sursa(job #496051)
#include<stdio.h>
long i,n,k;
long f[50001];
long transport(long c)
{
long i,s=0,t=0;
for(i=1;i<=n;++i)
if(f[i]>c)
return k+1;
else
if(s+f[i]>c)
{
s=f[i];
++t;
}
else
s+=f[i];
if(s>0)
++t;
return t;
}
long binar_search()
{
long st,dr,med,t,last=-1;
st=1;
dr=2560000000;
while(st<=dr)
{
med=st+((dr-st)>>1);
t=transport(med);
if(t<=k)
{
last=med;
dr=med-1;
}
else
st=med+1;
}
return last;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%ld%ld",&n,&k);
for(i=1;i<=n;++i)
scanf("%ld",&f[i]);
printf("%ld\n",binar_search());
return 0;
}