Pagini recente » Borderou de evaluare (job #676822) | Borderou de evaluare (job #1014137) | Borderou de evaluare (job #2851179) | Borderou de evaluare (job #1886826) | Cod sursa (job #815587)
Cod sursa(job #815587)
#include<stdio.h>
int main ()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int n,k,l1,l2=0,m,i,max=0,nr,s=0,w,v[16001],cn;
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
{scanf("%d",&v[i]);
if(v[i]>max)
max=v[i];
l2+=v[i];
}
l1=max-1;
l2++;
while(l1<=l2)
{nr=(l1+l2)/2;
s=0;
w=1;
for(i=1;i<=n;i++)
{
if(s+v[i]<=nr)
s+=v[i];
else
{w++;
s=v[i];
}
}
if(w<=k)
l2=nr-1;
else
l1=nr+1;
if(w==k)
cn=nr;
}
if(w!=k)
nr=cn;
if(nr<max)
nr=max;
printf("%d",nr);
return 0;
}