Pagini recente » Cod sursa (job #2312543) | Cod sursa (job #1718202) | Cod sursa (job #2127568) | Cod sursa (job #1345875) | Cod sursa (job #467097)
Cod sursa(job #467097)
#include <cstdio>
#include <cassert>
#include <algorithm>
#include <cmath>
#define Nmax 1000005
#define mod 9901
#define InFile "pod.in"
#define OutFile "pod.out"
using namespace std;
int n, m, k;
int T[Nmax], Sc[Nmax];
void read();
void solve();
void write();
int binara (int x);
int main()
{
assert (freopen (InFile, "r", stdin));
assert (freopen (OutFile, "w", stdout));
read();
sort (Sc, Sc+m);
solve();
write();
return 0;
}
void read()
{
int i, a;
scanf("%d %d %d\n", &n, &m, &k);
for (i=0; i<m; i++)
scanf("%d ", &a), Sc[a]=1;
}
void solve ()
{
int i, rez, poz, r;
T[0]=1;
for (i=1; i<=n; i++)
T[i]=(!Sc[i-1]?T[i-1]:0)+(!Sc[i-k]&&i-k>=0?T[i-k]:0);
}
int binara(int x)
{
int st=0, dr=m-1, mij;
while (st<=dr)
{
mij=st+(dr-st)/2;
if (Sc[mij]==x)
return mij;
else
if (Sc[mij]>x)
dr=mij-1;
else
st=mij+1;
}
return -1;
}
void write()
{
printf ("%d\n", T[n]);
}