题目描述
给出一个长度为 n 的序列 a,选出其中连续且非空的一段使得这段和最大。
输入格式
第一行是一个整数,表示序列的长度 n。
第二行有 n 个整数,第 i 个整数表示序列的第 i 个数字 ai。
输出格式
输出一行一个整数表示答案。
#include<bits/stdc++.h>
using namespace std;
#define REG register
#define ll long long
#define IN inline
int n,a,minn=0,ans=-2e8,sum;
int main()
{
cin>>n;
for(REG int i=0;i<n;i++)
{
cin>>a;
sum+=a; // sum储存前i项和
ans=max(ans,sum-minn); // 前i项和减去最小前缀和,若比当前答案大则将答案更新
minn=min(minn,sum); // minn储存最小的前缀和
}
cout<<ans<<endl;
}