AC

许诺 · 发布于 2025-05-04 · 浏览 358 回复 0
#include <iostream>
#include <deque>

using namespace std;

const int MAXN = 200005; int n, m; int a[MAXN]; long long sum[MAXN];

int main() {

cin >> n >> m;
sum[0] = 0;
for (int i = 1; i <= n; ++i) {
    cin >> a[i];
    sum[i] = sum[i - 1] + a[i];
}

deque<int> q;
q.push_back(0);
long long res = sum[1];
for (int i = 1; i <= n; ++i) {
    while (!q.empty() && i - q.front() > m) {
        q.pop_front();
    }
    if (!q.empty()) {
        res = max(res, sum[i] - sum[q.front()]);
    }
    while (!q.empty() && sum[i] <= sum[q.back()]) {
        q.pop_back();
    }
    q.push_back(i);
}

cout << res << endl;
return 0;

}

全部回复 共 0 条

还没有人回复。往下写第一条。

发表回复