Pagini recente » Cod sursa (job #2494141) | Cod sursa (job #2893372) | Cod sursa (job #2381454) | Cod sursa (job #2451621) | Cod sursa (job #897168)
Cod sursa(job #897168)
#include <cstdio>
#define NMax 16001
using namespace std;
long maxx,minn,pw,j,k,n,v[NMax],x,in,maxxe,prev;
int bsearch(long in,long fn,long v[],long val) {
long mid;
if(v[fn]<val)
return fn;
while(in<=fn) {
mid=(fn-in)/2+in;
if(v[mid]<=val&&val<v[mid+1])
return mid;
else
if(val<v[mid])
fn=mid-1;
else
in=mid+1;
}
return 1;
}
int main()
{
freopen("transport.in","rt",stdin);
freopen("transport.out","wt",stdout);
scanf("%ld %ld",&n,&k);
for(long i=1;i<=n;i++) {
scanf("%ld",&x);
v[i]=v[i-1]+x;
if(x>maxxe)
maxxe=x;
}
j=k;in=0;
while(j>1) {
pw=v[in]+(v[n]-v[in])/j;
minn=bsearch(in+1,n,v,pw);
prev=in;
in = pw-v[minn]>v[minn+1]-pw ? minn+1 : minn;
if(v[in]-v[prev]>maxx)
maxx=v[in]-v[prev];
j--;
}
printf("%ld",maxx);
return 0;
}