#include <bits/stdc++.h>
using namespace std;
int n, k, ans = INT_MIN;
int s[600000];
deque<int> dq;
int main(){
scanf("%d%d", &n, &k);
dq.push_back(0);
for (int i = 1; i <= n; i++){
scanf("%d", &s[i]);
s[i] += s[i - 1];
}for (int i = 1; i <= n; i++){
while (!dq.empty() && dq.front() < i - k){
dq.pop_front();
}while (!dq.empty() && s[i] <= s[dq.back()]){
dq.pop_back();
}dq.push_back(i);
ans = max(ans, s[i] - s[dq.front()]);
}printf("%d", ans);
return 0;
}
用的单调队列,怎么WA了?