Pagini recente » Cod sursa (job #883209) | Cod sursa (job #1978888) | Cod sursa (job #869469) | Cod sursa (job #2417135) | Cod sursa (job #496327)
Cod sursa(job #496327)
#include<stdio.h>
int t,n,k,s[16001];
int transporturi(int c)
{
int cap,i,nd=0;
cap=0;
for(i=1;i<=n;i++)
if(s[i]>c)
return k+1;
else
if(cap+s[i]<=c)
cap=cap+s[i];
else
{
nd++;
cap=s[i];
}
if(cap>0)
nd++;
return nd;
}
int bs()
{
int st,dr,med,last,d;
st=1;
dr=t;
while(st<=dr)
{
med=(st+dr)/2;
d=transporturi(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",&s[i]);
t=t+s[i];
}
printf("%d\n",bs());
return 0;
}