#include <stdio.h>
int main(){
int N[10000],K;
int first_sub=0,last_sub=0,temp_sub=0;//序列中第一个、最后一个元素的下标
int CurrentSum=0,MaxSum=-1; //MaxSum初始化为负数
scanf("%d",&K); //整数的个数K
for(int i=0;i<K;i++){
scanf("%d",&N[i]); //输入K个整数
CurrentSum+=N[i]; //当前序列向后累加
if(CurrentSum>MaxSum){
MaxSum=CurrentSum;
last_sub=i;
first_sub=temp_sub;
}
if(CurrentSum<0){ //当前序列和为负数时
CurrentSum=0; //记当前的序列和为0
temp_sub=i+1; //当前序列第一个坐标的下一个坐标作为新序列的第一个坐标
}
}
if(MaxSum<0) //MaxSum<0即任意序列和均小于0,则K个整数均为负数
printf("0 %d %d",N[0],N[K-1]);
else
printf("%d %d %d",MaxSum,N[first_sub],N[last_sub]);
return 0;
}
参考:https://blog.csdn.net/qq_36589706/article/details/82630370