1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
#include <cstdio> #include <algorithm> #include <cstring> #include <cmath> using namespace std; typedef long long LL; const int Maxn=1e5+10; const int INF=0x3f3f3f3f; const LL MOD=1e6; LL dp[3][Maxn]; int a[Maxn]; int () { int t,n,l,r,x; while(~scanf("%d%d%d%d",&t,&n,&l,&r)) { memset(a,0,sizeof(a)); memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) scanf("%d",&x),a[x]+=1;
LL *cur=dp[0],*nex=dp[1]; cur[0]=1; for(int i=0;i<=t;i++) { nex[0]=1; for(int j=1;j<=n;j++) { if(j-1-a[i]>=0) nex[j]=(nex[j-1]+cur[j]-cur[j-1-a[i]]+MOD)%MOD; else nex[j]=(nex[j-1]+cur[j])%MOD; } swap(cur,nex); }
LL ans=0; for(int i=l;i<=r;i++) ans=(ans+cur[i])%MOD; printf("%I64dn",ans); } return 0; }
|
近期评论