Pagini recente » Cod sursa (job #588511) | Cod sursa (job #307903) | Cod sursa (job #2530998) | Cod sursa (job #1200670) | Cod sursa (job #448615)
Cod sursa(job #448615)
#include<stdio.h>
long x[16001];
long sp[16002];
int main()
{
long n,k,i,m,min=1000000000,nk,s=0,vs,st,dr,min2;
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%ld%ld",&n,&k);
for (i=1;i<=n;i++)
{
scanf("%ld",&x[i]);
sp[i]=sp[i-1]+x[i];
}
st=1;
dr=sp[n];
min2=min;
sp[n+1]=sp[n]+10;
while (st<=dr)
{
m=(st+dr)/2;
nk=0;
s=0;
vs=0;
for (i=1;i<=n+1;i++)
{
if (sp[i]-vs>m)
{
nk++;
if (i==1)
{nk=0;
break;}
vs=sp[i-1];
}
}
if (nk==0)
st=m+1;
else
if (nk<=k)
{
if (m<min && nk)
min=m;
dr=m-1;
}
else
st=m+1;
}
if (min==min2)
printf("%ld\n",sp[n]);
else
printf("%ld\n",min);
return 0;
}