#include <iostream>
#include<string> 
#include<stdio.h>
#include<vector>
using namespace std; 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
    int n; 
    cin>>n;
    vector<int>v(n);
    int sum = -1,l=0,r=n-1,tmpl=0,tmpr=0,tmpSum=0;
    for(int i = 0; i < v.size(); i++){
        scanf("%d",&v[i]);
            tmpSum += v[i];
            tmpr = i;
            if(tmpSum < 0){
                tmpSum = 0;
                tmpr = tmpl = i+1;
            }
            else if(tmpSum > sum){
                sum = tmpSum;
                l = tmpl;
                r = tmpr;
            }
            
    }
    if(sum<0)sum=0; 
    printf("%d %d %d",sum ,v[l] ,v[r]);
    return 0;
}

细节:  1.全为负数的数列,不跟新sum 和l,r  所以初始化为 l = 0, r = n-1;

      2. 考虑到可能有只有零和负数的数列,此时最大值为0,但是l 和r需要更新,所以sum 初始值为-1而不是零