MornHus @ 2023-11-01 21:14:56
RT,hack过不了
#include<bits/stdc++.h>
using namespace std;
#define maxn 200005
int n,l,r;
int a[maxn];
int dp[maxn];
// [i-r-1 , i-l]
int ans;
typedef pair<int,int> pii;
//first value second id
priority_queue<pii> ql,qr;
int main(){
cin>>n>>l>>r;
for(int i=0;i<=n;i++){
cin>>a[i];
}
for(int i=0;i<l;i++){
ql.push(make_pair(a[i],i));
}
for(int i=l;i<=n;i++){
qr.push(make_pair(dp[i-l],i-l));
if(i-r-1>=l)ql.push(make_pair(dp[i-r-1],i-r-1));
while(!ql.empty()){
if(ql.top().first==qr.top().first){
if(ql.top().second==qr.top().second){
ql.pop();
qr.pop();
}else{
break;
}
}else{
break;
}
}
dp[i]=qr.top().first+a[i];
}
for(int i=n-r-1;i<=n;i++)ans=max(ans,dp[i]);
cout<<ans;
return 0;
}