#include <iostream>
using std::endl;
using std::cout;
using std::cin;
int c=0; //为了测试
int find_Max(int *A, int n)
{
int sum_left, sum_right, sum_mid;
if(n==1)
{ cout << "C=" << c++ << " " <<*A << endl; return *A;}
else if(n==2)
{ cout << "C=" << c++ << " " << *A <<" " << *(A+1) << endl; return *A > *(A+1)? *A:*(A+1);}
int mid;
if(n%2==0)
mid=n/2;
else
mid=(n-1)/2;
int maxleft, maxright, i, temp;
for(i=mid-2, maxleft=A[mid-1], temp=maxleft; i>=0 ; i--)
{
maxleft+=A[i];
if(temp <= maxleft)
temp=maxleft;
}
maxleft=temp;
for(i=mid+1, maxright=A[mid], temp=maxright; i<n; i++)
{
maxright+=A[i];
if(temp<=maxright)
temp=maxright;
}
maxright=temp;
sum_mid=maxleft+maxright;
sum_left=find_Max(A, mid);
sum_right=find_Max(&A[mid], n-mid);
int max;
max=sum_left>=sum_right?sum_left:sum_right;
max=max>=sum_mid?max:sum_mid;
cout << "C=" << c++ << " "<< sum_left << " " << sum_right << " " << sum_mid << endl;
return max;
}
int main()
{
cout << "Please input some numbers:" << endl;
int A[10];
for(int i=0; i<10; i++)
cin >> A[i];
int max;
max=find_Max(A, 10);
cout << "The Max is: " << max << endl;
return 0;
}