Pagini recente » Cod sursa (job #2729265) | Cod sursa (job #1561495) | Cod sursa (job #440118) | Cod sursa (job #381693) | Cod sursa (job #496317)
Cod sursa(job #496317)
#include<stdio.h>
int t,n,k,v[16010];
int transport(int c)
{ int cap=0,i,nd=0;
for(i=1;i<=n;i++)
if(cap+v[i]<=c)
cap=cap+v[i];
else
{ nd++;
cap=v[i];
}
if(cap>0)
nd++;
return nd;
}
int bs()
{ int st,dr,med,d,last;
st=1;dr=t;
while(st<=dr)
{ med=(st+dr)/2;
d=transport(med);
if(d>k)
st=med+1;
else
{ dr=med-1;
last=med;
}
}
return last;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int i;
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
{ scanf("%d",&v[i]);
t+=v[i];
}
printf("%d\n",bs());
return 0;
}