Pagini recente » Cod sursa (job #1600056) | Cod sursa (job #2260893) | Cod sursa (job #1635451) | Cod sursa (job #1284342) | Cod sursa (job #496045)
Cod sursa(job #496045)
#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;
st=1;
dr=(1ul<<31)-1;
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;
}