Cod sursa(job #466998)

Utilizator bog29Antohi Bogdan bog29 Data 28 iunie 2010 10:45:16
Problema Pod Scor 15
Compilator cpp Status done
Runda Stelele Informaticii 2010, clasele X-XII, Ziua 2 Marime 1.01 kb
#include<fstream>
#include<deque>
#include<map>
using namespace std;
ifstream in("pod.in");
ofstream out("pod.out");

int k,m;
long long n,a;
map<long long,bool> p;
map<long long,bool>::iterator it;
deque<int>dq;

int main()
{	long long i,j;
	in>>n>>m>>k;
	for(i=0;i<m;i++)
	{	in>>a;
		p[a]=1;
	}	
	in.close();
	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(p[i]==0)
		if(it == p.end() && i!=it->first ) 
		{	it=p.find(i+1);
			//if(p[i+1]==0)
			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(p[i+k]==0)
			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];
	out.close();
	return 0;
}