Cod sursa(job #466985)

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

int k,m,crt;
long long n,a,x[1004];
//map<long long,bool> p;
deque<int>dq;

int bs(long long k)
{	int l,r,md;
	l=0;
	r=m-1;
	while(l<=r)
	{	md=(l+r)/2;
		//out<<l<<" "<<r<<" "<<md<<'\n';
		if(x[md]==k)
			return 1;
		else if(k < x[md])
			r=md-1;
		else if(k > x[md])
			l=md+1;
	}
	return 0;
}	

int main()
{	long long i,j;
	in>>n>>m>>k;
	for(i=0;i<m;i++)
	{	//in>>a;
		//p[a]=1;
		in>>x[i];
	}	
	in.close();
	for(i=0;i<=k;i++)
		dq.push_back(0);
	dq[0]=1;
	crt=0;
	for(i=0;i<n;i++)
	{	/*out<<i<<'\n';
		for(j=0;j<=dq.size();j++)
			out<<dq[j]<<" ";
		out<<'\n';*/
		
		if(!bs(i))
		{	
			if(!bs(i+1))
			{	dq[1]+=dq[0];
				while(dq[1] > 9901)
					dq[1]-=9901;
			}
			
			if(!bs(i+k))
			{	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<<bs(1);
	out.close();
	return 0;
}