文章
211
粉丝
0
获赞
1101
访问
36.9k
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
while (cin >> n && n != 0) {
vector<long long> a(n);
for (int i = 0; i < n; i++)
cin >> a[i];
// 记录以i结尾的最优解
long long curSum = a[0];
int curL = 0;
long long bestSum = a[0];
int bestL = 0, bestR = 0;
for (int i = 1; i < n; i++) {
// 关键:>= 保证相等时延续,使终点j更小
if (curSum + a[i] >= a[i]) {
curSum += a[i];
} else {
curSum = a[i] ;
curL = i;
}
// 更新全局最优
if (curSum > bestSum) {
bestSum = curSum;
bestL = curL;
bestR = i;
} else if (curSum == bestSum) {
// 和相等,比较起点i(curL vs bestL)
if (curL < bestL || (curL == bestL && i <...
登录后发布评论
暂无评论,来抢沙发