a[i]表示以第i个元素为结尾的最大子序列和。
通过一个例子我们可以推导出此递归产生式:a[i]=max(a[i],a[i-1]+a[i]);

比如
1 5 -3 2 4

a[0]=1;
a[2]=1+5=6;
a[3]=1+5+(-3)=3;
a[4]=3+2=5;
a[6]=5+4=9;

1 -2 3 4 -10 6
a[0]=1;
a[1]=-1;
a[2]=3;
a[3]=3+4=7;
a[4]=7+(-10)=-3;
a[5]=6;

#include<iostream>
#include<limits.h>
using namespace std;
const int maxn=1000000;
long long a[maxn];
long long res[maxn];
int n;
//long long表示最大范围是(-2^63,2^63-1) 
int main(){
    while(cin>>n){
        long long answer=-INT_MAX;
        for(int i=0;i<n;i++)cin>>a[i];
        for(int i=1;i<n;i++){
            a[i]=max(a[i],a[i-1]+a[i]);
            answer=max(answer,a[i]);
        }
        cout<<answer<<endl;
    }
    return 0;
}