文章
121
粉丝
0
获赞
125
访问
7.6k
#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];
// 全负数检查
bool allNeg = true;
for (int x : a)
if (x >= 0) {
allNeg = false;
break;
}
if (allNeg) {
cout << 0 << " " << a[0] << " " << a[n-1] << endl;
continue;
}
// 记录以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;
}
...
登录后发布评论
暂无评论,来抢沙发