#include<cstdio>
//问题关键:只要出现正数最大子序列和就不可能为负 ----所以思考问题的时候要注意想一下问题的巧妙之处
int a[10000];
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
int sum=-1;
int temp;
int start;
int end;
for(int i=0;i<n;i++){
temp=0;
for(int j=i;j<n;j++){
temp+=a[j];
//最大子序列和的第一个数一定是个正数
if(temp>sum){
sum=temp;
start=a[i];
end=a[j];
}
}
}
if(sum<0){
printf("0 %d %d\n",a[0],a[n-1]);
}
else{
printf("%d %d %d\n",sum,start,end);
}
}
知识点:最大子序列和的第一个数一定是个正数
问题关键:只要出现正数最大子序列和就不可能为负 ----所以思考问题的时候要注意想一下问题的巧妙之处