Pagini recente » Cod sursa (job #1232667) | Cod sursa (job #3226733) | Cod sursa (job #3004013) | Cod sursa (job #3001452) | Cod sursa (job #497068)
Cod sursa(job #497068)
#include<stdio.h>
long x[16005],n,k,s2;
int ok(int c)
{
int u,s,i,nt=0,l;
u=1;
s=0;
for (i=1;i<=n;i++)
{
l=c;
if (x[i]>c) return k+1;
else
{
if (s+x[i]<=c)
s=s+x[i];
else
{
nt++;
s=x[i];
}
}
}
if (s<c) nt++;
return nt;
}
int cb()
{
int st,dr,med,last=-1;
st=1;
dr=s2;
while (st<=dr)
{
med=(st+dr)/2;
if (ok(med)<=k)
{
dr=med-1;
last=med;
}
else
st=med+1;
}
return last;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%ld%ld",&n,&k);
int i;
for (i=1;i<=n;i++)
{
scanf("%ld",&x[i]);
s2=s2+x[i];
}
printf("%d",cb());
}