Pagini recente » Cod sursa (job #2157152) | Cod sursa (job #40099) | Cod sursa (job #932413) | Cod sursa (job #2924198) | Cod sursa (job #466356)
Cod sursa(job #466356)
Utilizator |
Cezar Mocan CezarMocan |
Data |
26 iunie 2010 13:14:33 |
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;
}