rt.单调队列做法
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
using namespace std;
int n, m, a[500005], sum, ans = -0x7fffffff;
int main() {
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
int head = 0, tail = 0;
while (tail < n) {
sum += a[++tail];
ans = max(ans, sum);
while (head < tail && (sum <= 0 || tail - head + 1 > m)) {
sum -= a[++head];
ans = max(ans, sum);
}
}
printf("%d", ans);
}