Pagini recente » Cod sursa (job #2453172) | Cod sursa (job #2550388) | Cod sursa (job #2456407) | Cod sursa (job #1602939) | Cod sursa (job #1100108)
#include<cstdio>
int k,v[16001],n;
int ok(int t)
{
int i,s=0,count=0;
for(i=1;i<=n;i++)
{
if(v[i]>t) return 0;
if (s+v[i]<=t)
s=s+v[i];
else
{
count++;
s=v[i];
}
}
if(s>0)
count++;
if (count<=k)
return 1;
else
return 0;
}
int bs(int st,int dr)
{
int med,last=-1;
while(st<=dr)
{
med=st+((dr-st)>>1);
if (ok(med))
{
last=med;
dr=med-1;
}
else
st=med+1;
}
return last;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int i,s=0,x=0;
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
{
scanf("%d",&v[i]);
s=s+v[i];
}
printf("%d\n",bs(1,s));
return 0;
}