题目
给定一个长度为 n 的整数序列,要求从中选出两个连续子序列,使得这两个连续子序列的序列和之和最大,最终只需输出最大和。一个连续子序列的和为该子序列中所有数之和。每个连续子序列的最小长度为 1,并且两个连续子序列之间至少间隔一个数。
我的代码
#include <bits/stdc++.h>
using namespace std;
long long a[1000005],l[1000005],r[1000005],n;
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
long long c = a[0];
l[0] = a[0];
for (int i = 1; i < n; i++) {
c = max(a[i], c + a[i]);
l[i] = max(l[i-1], c);
}
c = a[n-1];
r[n-1] = a[n-1];
for (int i = n-2; i >= 0; i--) {
c = max(a[i], c + a[i]);
r[i] = max(r[i+1], c);
}
long long result = LLONG_MIN;
for (int i = 0; i < n-1; i++) {
result = max(result, l[i] + r[i+1]);
}
cout << result;
return 0;
}
这代码第二个样例没过,结果提交上去AC了
这数据阴成啥了