Pagini recente » Cod sursa (job #1318232) | Cod sursa (job #1808538) | Cod sursa (job #2953698) | Cod sursa (job #2073453) | Cod sursa (job #362257)
Cod sursa(job #362257)
#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("transport.in","r",stdin);
freopen("transport.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;
}