Cod sursa(job #467410)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 28 iunie 2010 20:10:35
Problema Pod Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <algorithm>
#include <cassert>
#include <cctype>
#include <cmath>
#include <cstring>
#include <ctime>
#include <bitset>
#include <deque>
#include <fstream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>

using namespace std;

typedef bool int01;
typedef char cha08;
typedef short int int16;
typedef int int32;
typedef float rea32;
typedef long long int int64;
typedef double rea64;

const cha08 Input[] = "pod.in";
const cha08 Output[] = "pod.out";

const int32 Mod = 9901;

int32 N, M, K;
vector <int32> sol;

int32 main() {

    ifstream fin( Input );
    ofstream fout( Output );

    int32 i, x;

    fin >> N >> M >> K;
    sol.resize( N + 1 );

    for( i = 0; i < M; ++i ) {

        fin >> x;
        sol[x] = -1;
    }

    for( sol[0] = 1, i = 0; i < N; ++i )
        if( sol[i] != -1 ) {

            if( sol[i + 1] != -1 )
                sol[i + 1] = (sol[i + 1] + sol[i]) % Mod;
            if( sol[i + K] != -1 )
                sol[i + K] = (sol[i + K] + sol[i]) % Mod;
        }

    fout << sol[N];

    fin.close();
    fout.close();

    return 0;
}