Cod sursa(job #467308)

Utilizator dornescuvladVlad Eugen Dornescu dornescuvlad Data 28 iunie 2010 14:01:31
Problema Pod Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2010, clasele X-XII, Ziua 2 Marime 0.79 kb
#include <iostream>
#include <fstream>
#define MOD 9901

using namespace std;

const char iname[] = "pod.in";
const char oname[] = "pod.out";
const int nmax = 4000005;

ifstream fin(iname);
ofstream fout(oname);

int N, K, M, j, F[nmax], Sc[nmax + 6], i, x;

int main()
{
	fin >> N >> M >> K;
	for(i = 1; i <= M; i ++)
	{
		fin >> x;
		Sc[x] = 1;
	}
	
	if(!Sc[1])
	{
		F[1] = 1;
		if(Sc[K] == 0 && K != 1)
			F[K] = 2;
		for(i = 2; i <= N; i ++)
			if(Sc[i] == 0 && i != K)
				F[i] = (F[i] + F[i - 1] + F[i - K]) % MOD;
	}
	else
	{
		F[K] = 1;
		F[1] = 0;
		for(i = K + 1; i <= N; i ++)
			if(Sc[i] == 0 && i - K > 0)
				F[i] = (F[i] + F[i - 1] + F[i - K]) % MOD;
	}
	if(Sc[K] == 1 && Sc[1] == 1)
		fout << "0";
	else
		fout << F[N] % MOD;
	return 0;
}