Cod sursa(job #467321)

Utilizator FlorianFlorian Marcu Florian Data 28 iunie 2010 14:08:31
Problema Pod Scor 15
Compilator cpp Status done
Runda Stelele Informaticii 2010, clasele X-XII, Ziua 2 Marime 0.6 kb
using namespace std;
#include<fstream>
const int mod = 9901;
short int dp[1000007];
int K, N, M;
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;
		dp[x] = -1;
	}
	if( dp[N] == -1 || dp[0] == -1 || ( dp[1] == -1 && dp[K] == -1 ) ) { out<<"0\n"; return 0; }
	dp[0] = 1;
	for(i = 1; i <= N; ++i)
	{
		if( dp[i] == -1 ) continue;
		if( dp[i-1] != -1) dp[i] = dp[i-1];
		if( i - K >= 0  && dp[i-K] != -1) dp[i] = ( dp[i] + dp[i-K] ) % mod;
	}
	out<<dp[N]<<"\n";	
	return 0;
}