#include <iostream>
#include <ctime>
using namespace std;
int max_sub_array(int *s,int s_size,int &left,int &right){ //左闭右开
if(s_size<=0){
cout<<"invalid array"<<endl;
return NULL;
}
left=0;right=1;
int this_sum=s[0],temp_left=0,temp_right=1,max_sum=s[0];
for(int i=1;i<s_size-1;++i){
this_sum+=s[i];
++temp_right;
if(this_sum>max_sum){
max_sum=this_sum;
left=temp_left;
right=temp_right;
}else if(this_sum<=0){
temp_left=temp_right=i+1;
this_sum=0;
}
}
// --right;
return max_sum;
}
int main(){
int num=10000;
srand(unsigned(time(0)));
int left,right;
int *arr=new int[num];
for(int i=0;i<num;++i)
arr[i]=rand()%200-100;
cout<<max_sub_array(arr,num,left,right)<<endl;
int sum_=0;//确认结果
for(int i=left;i<right;++i){
sum_+=arr[i];
}
cout<<sum_<<endl;
system("pause");
}