0 pts 乃大龙求条
查看原帖
0 pts 乃大龙求条
1378591
Barewalk楼主2025/1/8 18:53

rt。

#include <iostream>

#define N 1100100

using namespace std;

int n, a[N << 1];
int ans, dq[N << 1];

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i], a[i + n] = a[i];
    int j = 1, st = 1, ed = 0;
    for (int i = 1; i <= n << 1; i++) {
        while (j < i && i - j >= n >> 1) {
            while  (st <= ed && a[j] - j <= dq[ed]) ed--;
            dq[++ed] = j++;
        }
        while (st <= ed && i - dq[st] > n >> 1) st++;
        ans = max(ans, a[i] + a[dq[st]] +i - dq[st]);
    }
    cout << ans << "\n";
    return 0;
}
2025/1/8 18:53
加载中...