Pagini recente » Cod sursa (job #941902) | Cod sursa (job #2349388) | Cod sursa (job #345493) | Cod sursa (job #3207338) | Cod sursa (job #467008)
Cod sursa(job #467008)
#include<stdio.h>
#include<algorithm>
#define NMAX 1000010
#define p 9901
using namespace std;
//inm matrici prea lung 200 rand
/*
int sec,n,m,k,gaur[NMAX],mat[31][NMAX][NMAX],sir[3][NMAX],m[NMAX][NMAX],answer[NMAX],ras[NMAX][2*NMAX];
void top1(el)
{
int i;
for (i=1;i<=k;++i)
if (sir[2][el-1]<sir[1][el]+i-k-1 || sir[1][el-1]>sir[1][el]+i-k-1){ras[el][i]=0;}
else ras[el][i]=ras[el-1][k-i+1];
}
void prel(int el)
{
top1(el);
}
int main()
{
freopen("pod.in","r",stdin);
freopen("pod.out","w",stdout);
scanf("%d%d%d",&n,&m,&k);
gaur[1]=0;gaur[m+2]=n+1;
for (i=1;i<=m;++i)
scanf("%d",&gaur[i+1]);
sor(gaur+1,gaur+m+3);
for (i=1;i<=m+1;++i)
if ( gaur[i]+1!=gaur[i+1])
{sir[++sec][1]=gaur[i]+1;sir[sec][2]=gaur[i+1]-1;}
for (i=1;i<=sec;++i)
prel(i);
return 0;
}
*/
int n,m,k,mat[NMAX];
int main()
{
int i,temp;
freopen("pod.in","r",stdin);
freopen("pod.out","w",stdout);
scanf("%d%d%d",&n,&m,&k);
for (i=1;i<=m;++i)
{
scanf("%d",&temp);
mat[temp]=-1;
}
for (i=0;i<k;++i)
if (mat[i]!=-1)
mat[i]=1;
for (i=k;i<=n;++i)
if (mat[i]!=-1)
{
mat[i]=mat[i-1]+mat[i-k];
if (mat[i-1]==-1)
++mat[i];
if (mat[i-k]==-1)
++mat[i];
mat[i]=mat[i]%p;
}
printf("%d",mat[n]);
return 0;
}