Pagini recente » Cod sursa (job #1396380) | Cod sursa (job #2224601) | Cod sursa (job #2491872) | Borderou de evaluare (job #151569) | Cod sursa (job #496035)
Cod sursa(job #496035)
#include<stdio.h>
int max,s,x[16050],k,n,i;
int raton(int val)
{ int cs,c=0;
if(val<max)
return k+1;
else
{
cs=x[1];
for(i=2;i<=n;i++)
if(cs+x[i]>val)
{
c++;
cs=x[i];
}
else
cs=cs+x[i];
if(cs>0)
c++;
return c;
}
}
int bs()
{
int st,dr,med,t,last;
st=1; dr=s;
while(st<=dr)
{
med=st+((dr-st)>>1);
t=raton(med);
if(t<=k)
{
last=med;
dr=med-1;
}
else
{
st=med+1;
}
}
return last;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
{
scanf("%d",&x[i]);
if(x[i]>max)
max=x[i];
s=s+x[i];
}
printf("%d",bs());
return 0;
}