#include<stdlib.h>
int maxtmp(int, int, int );
int max(int a[], int lower, int hight)
{
if(lower == hight){
return a[lower];
}
int mid = (hight - lower)/2+lower;
int lmax= max(a, lower, mid);
int hmax= max(a, mid+1, hight);
int lsum=a[mid], temlsum= a[mid];
int i =mid-1;
for(;i>=lower; i--){
temlsum += a[i];
if( temlsum > lsum){ lsum = temlsum;}
}
int hsum=a[mid+1],temhsum= a[mid+1];
i = mid+2;
for(; i < hight; i++){
temhsum += a[i];
if( hsum < temhsum){ hsum = temhsum;}
}
return maxtmp(hsum+lsum,lmax,hmax);
}
int maxtmp(int max, int lmax , int hmax){
if(max > lmax && max > hmax){ return max;}
if( lmax > max && lmax > hmax ){ return lmax;}
return hmax;
}
int main(){
int ar[] = {2,3,-4,-5,1,2,4};
int size = (sizeof(ar)/ sizeof(int) -1);
int a = max(ar, 0 ,size);
printf("a is:%d\n",a);
return 1;
}