代码如下
#include <bits/stdc++.h>
using namespace std;
int a[200010];
int q[1000010];
int head=1,tail=0;
int dp[1000010];
int n,l,r;
int main()
{
scanf("%d%d%d",&n,&l,&r);
for(int i=0;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(int i=l;i<=n;i++)
{
while(head<=tail&&i-q[head]>r)
{
head++;
}
while(head<=tail&&dp[q[tail]]<=dp[i-l])
{
tail--;
}
q[++tail]=i-l;
dp[i]=dp[q[head]]+a[i];
}
int ans=-10000;
for(int i=n-r+1;i<=n;i++)
{
ans=max(ans,dp[i]);
}
cout<<ans;
return 0;
}