Pagini recente » Cod sursa (job #2279348) | Cod sursa (job #1565765) | Cod sursa (job #2143896) | Cod sursa (job #2840432) | Cod sursa (job #467098)
Cod sursa(job #467098)
#include<fstream>
#include<deque>
#include<map>
using namespace std;
ifstream in("pod.in");
ofstream out("pod.out");
long long k,m;
long long n,a;
map<long long,bool> p;
map<long long,bool>::iterator it;
deque<int>dq;
void s1()
{ int i;
for(i=0;i<=k;i++)
dq.push_back(0);
dq[0]=1;
for(i=0;i<n;i++)
{
dq[1]+=dq[0];
while(dq[1] > 9901)
dq[1]-=9901;
dq[k]+=dq[0];
while(dq[k] > 9901)
dq[k]-=9901;
dq.pop_front();
dq.push_back(0);
}
out<<dq[0];
}
void s2()
{ int i;
for(i=0;i<=k;i++)
dq.push_back(0);
dq[0]=1;
for(i=0;i<n;i++)
{ /*out<<i<<'\n';
for(j=0;j<=dq.size();j++)
out<<dq[j]<<" ";
out<<'\n';*/
it=p.find(i);
if(it == p.end() && i!=it->first )
{ it=p.find(i+1);
if(it == p.end() && i+1 != it->first)
{ dq[1]+=dq[0];
while(dq[1] > 9901)
dq[1]-=9901;
}
it=p.find(i+k);
if(it==p.end() && i+k != it->first )
{ dq[k]+=dq[0];
while(dq[k] > 9901)
dq[k]-=9901;
}
}
dq.pop_front();
dq.push_back(0);
/*for(j=0;j<=dq.size();j++)
out<<dq[j]<<" ";
out<<'\n'<<'\n';*/
}
out<<dq[0];
}
int main()
{ long long i,j;
in>>n>>m>>k;
for(i=0;i<m;i++)
{ in>>a;
p[a]=1;
}
in.close();
if(m==0)
s1();
else s2();
out.close();
return 0;
}