DP.
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 100050 #define mod 1000000 using namespace std; int n,m,l,r,sum[2][maxn],cnt[maxn],x; int main() { scanf("%d%d%d%d",&n,&m,&l,&r); for (int i=1;i<=m;i++) { scanf("%d",&x); cnt[x]++; } for (int i=0;i<=m;i++) sum[0][i]=1; for (int i=1;i<=n;i++) for (int j=0;j<=m;j++) { int ret; if (j>=cnt[i]+1) ret=(sum[i&1^1][j]-sum[i&1^1][j-cnt[i]-1]+mod)%mod; else ret=sum[i&1^1][j]; sum[i&1][j]=(sum[i&1][j-1]+ret)%mod; } printf("%d\n",(sum[n&1][r]-sum[n&1][l-1]+mod)%mod); return 0; }