Pagini recente » Cod sursa (job #3277119) | Cod sursa (job #2506595) | Cod sursa (job #3243865) | Cod sursa (job #3236524) | Cod sursa (job #362256)
Cod sursa(job #362256)
#include <stdio.h>
int v[16001],s,n,max,k;
int transport(int x)
{
int y=0,z=1,i;
for (i=1;i<n+1;i++)
{
if (y+v[i]<=x) y+=v[i];
else {
y=v[i];
++z;
}
}
return z;
}
int cautbin(int x)
{
int lo, hi, mid, last = 0;
for (lo = max, hi = s; lo <= hi; )
{
mid = lo + (hi-lo) / 2;
if (transport(mid)<=x) last = mid, hi = mid-1;
else lo = mid+1;
}
return last;
}
int main()
{
int i;
freopen("transp.in","r",stdin);
freopen("transp.out","w",stdout);
scanf("%d%d",&n,&k);
for (i=1;i<n+1;i++)
{
scanf("%d",&v[i]);
s+=v[i];
if (v[i]>max) max=v[i];
}
printf("%d",cautbin(k));
return 0;
}