Cod sursa(job #484810)

Utilizator cont_de_testeCont Teste cont_de_teste Data 15 septembrie 2010 21:35:58
Problema Pod Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <deque>

#define maxK 22
#define maxM 1020
#define mod 9901

using namespace std;


int N, M, K;
int pos[maxM];
deque <int> D;


int main() {
	int i, j;

	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]);

	sort(pos + 1, pos + M + 1);

	j = 1;
	D.push_back(1);
	for (i = 1; i < K; i++) {
		if (pos[j] == i) {
			D.push_back(0);
			j++;
		}
		else
			D.push_back(D.back());
	}

	for (i = K; i <= N; i++) {
		int curr = D.back() + D.front();
		if (pos[j] == i) {
			curr = 0;
			j++;
		}

		curr = curr % mod;

		D.push_back(curr);
		D.pop_front();
	}


	printf("%d\n", D.back());


	return 0;
}