麻烦大佬们看一下,蒟蒻看不出来哪里错了。。
#include <bits/stdc++.h>
#define LL long long
#define rep(i,j,k) for(int i = j; i <= k; i ++ )
#define per(i,j,k) for(int i = j; i >= k; i -- )
using namespace std;
const int N = 200010;
int n, m, k, a[N];
LL ans;
multiset<int> u, v;
int main() {
scanf("%d%d%d", &n, &m, &k);
rep(i,1,n) scanf("%d", &a[i]);
for(int i = 1; i <= m; i ++ ){
u.insert(a[i]); ans += a[i];
if(u.size() > k){
ans -= *u.rbegin();
v.insert(*u.rbegin());
u.erase(--u.end());
}
}
printf("%lld ", ans);
for(int i = m + 1; i <= n; i ++ ){
int w = a[i - m];
u.insert(a[i]); ans += a[i];
if(u.size() > k){
ans -= *u.rbegin();
v.insert(*u.rbegin());
u.erase(--u.end());
}
if(w <= *u.begin()) ans -= w, u.erase(u.find(w)), ans += *v.begin(), u.insert(*v.begin()), v.erase(v.begin());
else v.erase(v.find(w));
printf("%lld ", ans);
}
return 0;
}
谢谢大佬,Thanks♪(・ω・)ノ