Cod sursa(job #466527)

Utilizator CezarMocanCezar Mocan CezarMocan Data 26 iunie 2010 22:11:10
Problema Pod Scor Ascuns
Compilator cpp Status done
Runda Marime 0.73 kb
#include <cstdio>

#define maxM 2010
#define maxN 1002010
#define maxK 52

#define mod 9901

using namespace std;

int N, M, K;
int pos[2010];
int D[maxN], bad[maxN];

int main() {
	int i;
	freopen("pod.in", "r", stdin);
	freopen("pod.out", "w", stdout);

	scanf("%d%d%d", &N, &M, &K);

	for (i = 1; i <= M; i++) {
		scanf("%d", &pos[i]);
		bad[pos[i]] = 1;
	}
	
	D[0] = 1;

	for (i = 1; i <= N; i++) {
		if (bad[i]) {
			D[i] = 0;
			continue;
		}
		if (!bad[i - 1]) {
			D[i] = D[i] + D[i - 1];
			if (D[i] >= mod)
				D[i] -= mod;
		}

		if (i >= K && !bad[i - K]) {
			D[i] = D[i] + D[i - K];
			if (D[i] >= mod)
				D[i] -= mod;
		}
	}

/*	for (i = 1; i <= N; i++)
		printf("%d ", D[i]);
	printf("\n");*/

	printf("%d\n", D[N]);

	return 0;
}