Pagini recente » Cod sursa (job #963373) | Cod sursa (job #2197442) | Cod sursa (job #342747) | Cod sursa (job #2620642) | 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;
}