对最大子列和的算法进行简单的判断即可
#include<stdio.h>
int main()
{
int n;
int array[100005];
int ThisSum=0,MaxSum=0;
int begin=0,end=0;
int left;
bool allNeg = true;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&array[i]);
}
for(int i=0;i<n;i++)
{
if(array[i] >= 0)
{
allNeg = false;
break;
}
}
for(int i=0;i<n;i++)
{
ThisSum += array[i];
if(ThisSum < 0){
ThisSum = 0;
left = i+1;//记录
}
if(ThisSum>MaxSum){
MaxSum = ThisSum;
begin = array[left];
end = array[i];
}
}
if(allNeg){
printf("%d %d %d",0,array[0],array[n-1]);
}
else{
printf("%d %d %d",MaxSum,begin,end);
}
}