Pagini recente » Cod sursa (job #37709) | Cod sursa (job #1607275) | Cod sursa (job #2735827) | Cod sursa (job #1951983) | Cod sursa (job #1405502)
#include <cstdio>
int v[16005],i,n,nr,Nr,Max;
long long s,st,dr,mij,sol;
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&Nr);
for (i=1; i<=n; i++)
{
scanf("%d",&v[i]);
dr=dr+v[i];
if (v[i]>Max) Max=v[i];
}
st=Max;
while (st<=dr)
{
mij=(st+dr)/2;
nr=1;
s=0;
for (i=1; i<=n; i++)
if (s+v[i]<=mij) s+=v[i];
else
{
s=v[i];
nr++;
}
if (nr<=Nr)
{
sol=mij;
dr=mij-1;
}
else st=mij+1;
}
printf("%d\n",sol);
return 0;
}