_#include<bits/stdc++.h> using namespace std; const int Maxn=200010; priority_queue q1,q2; int n,ll,rr; int arr[Maxn],dp[Maxn]; int main(){ cin>>n>>ll>> rr; n++;for (int i=1;i<=n;i++){cin>>arr[i]; dp
#include<bits/stdc++.h> using namespace std; const int Maxn=200010; priority_queue<int> q1,q2; int n,ll,rr; int arr[Maxn],dp[Maxn]; int main(){ cin>>n>>ll>>rr; n++; for (int i=1;i<=n;i++) { cin>>arr[i]; dp[i]=arr[i]; } for (int i=n-ll;i>=1;i--) { int x1=0,x2=0; q1.push(dp[i+ll]); if (i<n-rr) q2.push(dp[i+rr+1]); if (q2.empty()) { x1=q1.top(); } else { x1=q1.top(); x2=q2.top(); } while (x1==x2 && !q2.empty()) { x1=q1.top(); x2=q2.top(); q2.pop(); q1.pop(); } if (i>n-rr) { dp[i]=max(dp[i],dp[i]+x1); } else { dp[i]=dp[i]+x1; } } cout<<dp[1]; }
[i]=arr[i]; } for (int i=n-ll;i>=1;i--) { int x1=0,x2=0; q1.push(dp[i+ll]); if (i<n-rr) q2.push(dp[i+rr+1]); if (q2.empty()) { x1=q1.top(); } else { x1=q1.top(); x2=q2.top(); } while (x1==x2 && !q2.empty()) { x1=q1.top(); x2=q2.top(); q2.pop(); q1.pop(); } if (i>n-rr) { dp[i]=max(dp[i],dp[i]+x1); } else { dp[i]=dp[i]+x1; } } cout<<dp[1]; }_