#include<bits/stdc++.h>
#define endl '\n'
#define int int64_t
#define ld long double
using namespace std;
int dx[] = { -1,-1,0,1,1,1,0,-1 };
int dy[] = { 0,1,1,1,0,-1,-1,-1 };
const int NC = 2e3 + 10;
char ches[NC][NC];
const int mod = 1e9 + 7;
const int N = 5e5 + 10;
int a[N], s[N], n, m,k;
void solve() {
cin >> n >> m;
int mx = INT_MIN;
for(int i = 1;i <= n;++i)
cin >> a[i],mx = max(mx,a[i]);
if(mx <= 0){
cout << mx << endl;
return;
}
deque<int>q;
int ans = INT_MIN;
int sum = INT_MIN;
for(int i = 1;i <= n;++i){
if(sum <= 0){
sum = a[i];
q.clear();
}
else{
ans = max(ans,sum);
sum += a[i];
}
q.push_front(a[i]);
while(q.size() && (q.back() <= 0 || q.size() > m)){
sum -= q.back();
q.pop_back();
}
ans = max(ans,sum);
//cout <<"sum = " << sum << endl;
}
cout << ans << endl;
}
signed main() {
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int t = 1;
//cin >> t;
while (t--) {
solve();
}
return 0;
}
代码如上,各种hack数据也用了,但就是wa3,非常疑惑,期待您的帮助T_T