AcWing 1479. 最大子序列和
原题链接
中等
作者:
东方晓
,
2021-07-22 21:32:39
,
所有人可见
,
阅读 275
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 10010;
int n;
int a[N], f[N];
int main(){
cin >> n;
int res = f[0] = -1e6;
int t, l, r;
for (int i = 1; i <= n; i ++){
cin >> a[i];
//f(i):以ai结尾的最大子段和
f[i] = max(f[i-1] + a[i], a[i]);
//贪心:开辟新子段的起点
if (f[i-1] + a[i] < a[i]) t = a[i];
//当前子段和超过世界记录,更新答案
if (f[i] > res){
res = f[i];
r = a[i];
l = t;
}
}
if(res < 0) printf("%d %d %d\n", 0, a[1], a[n]);
else printf("%d %d %d\n", res, l, r);
return 0;
}
/*
n: 4
ai:5 -6 3 4
fi:5 -1 3 7
*/