Cod sursa(job #467198)

Utilizator FlorianFlorian Marcu Florian Data 28 iunie 2010 12:48:57
Problema Pod Scor 15
Compilator cpp Status done
Runda Stelele Informaticii 2010, clasele X-XII, Ziua 2 Marime 0.55 kb
using namespace std;
#include<fstream>
const int mod = 9901;
int dp[1000007], K, N, M;
char viz[1000007];
ofstream out("pod.out");
int main()
{
	ifstream in("pod.in");
	in>>N>>M>>K;
	int i, x;
	if( N == 0 ) { out<<"1\n"; return 0; }
	for(i = 1; i <= M; ++i)
	{
		in>>x;
		viz[x] = 1;
	}
	if( viz[N] || viz[0] || ( viz[1] && viz[K] ) ) { out<<"0\n"; return 0; }
	dp[0] = 1;
	for(i = 1; i <= N; ++i)
	{
		if( viz[i] ) continue;
		dp[i] = dp[i-1];
		if( i - K >= 0 ) dp[i] = ( dp[i] + dp[i-K] ) % mod;
	}
	out<<dp[N]<<"\n";	
	return 0;
}