当a[1]=1,a[2]=-2,a[3]=3时,调用divideConquer(1,3)返回结果为
int divideConquer(int l,int r) {
if(l>r) return 0;
if(l==r) {
b[l]=c[l]=a[l];
return max(0,a[l]);
}
int mid=(l+r)/2;
int lans=divideConquer(l,mid);
int rans=divideConquer(mid+1,r);
int ret=max(lans,rans);
ret=max(ret,c[mid]+b[mid+1]);
int sum=0;
for(int i=l;i<=r;++i) {
sum+=a[i];
b[l]=max(b[l],sum);
}
sum=0;
for(int i=r;i>=l;--i) {
sum+=a[i];
c[r]=max(c[r],sum);
}
return ret;}