Pagini recente » Rating Andrei Mateescu (AndreiEsteNebun) | Cod sursa (job #3172425) | Cod sursa (job #1821760) | Cod sursa (job #3151353) | Cod sursa (job #467064)
Cod sursa(job #467064)
#include <fstream>
using namespace std;
const int MAX_N = 1000005;
const int MOD = 9901;
ifstream fin ("pod.in");
ofstream fout ("pod.out");
int N, M, K, P[MAX_N];
char viz[MAX_N];
void citire() {
fin >> N >> M >> K;
for(int i = 1; i <= M; ++i) {
int x;
fin >> x;
viz[x] = 1;
}
}
void solve() {
P[0] = 1;
for(int i = 0; i < N; ++i) {
if(!viz[i+1]) {
P[i+1] += P[i];
if(P[i+1] > MOD)
P[i+1] -= MOD;
}
if(!viz[i+K] && i+K <= N) {
P[i+K] += P[i];
if(P[i+K] > MOD)
P[i+K] -= MOD;
}
}
fout << P[N];
}
int main() {
citire();
solve();
}