Cod sursa(job #1886714)

Utilizator CodrutLemeniCodrut Lemeni CodrutLemeni Data 21 februarie 2017 09:05:06
Problema Pod Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
#define N 1010
#define LMAX 50
#define MOD 9901

using namespace std;

int lips [ N ];
int steps [ LMAX ];

int main(){
    int n , m , k , i , cr ;

    freopen("pod.in","r",stdin);
    freopen("pod.out","w",stdout);

    scanf("%d %d %d",&n ,&m ,& k);

    for ( i = 0 ; i < m ;i++) {
        scanf("%d",&lips[ i ] );
    }
    sort ( lips ,lips + m );

    steps [ 0 ] = 1 ;
    int ActualWoodIndex = 0 ;
    for ( i = 1 ; i <= n ; i ++ ){
        cr = i % LMAX ;
        steps [ cr ] = 0 ;
        if ( lips [ ActualWoodIndex ] == i ){
            steps [ cr ] = 0 ;
            ActualWoodIndex ++ ;
            continue ;
        }

        steps [ cr ] += steps [ ( cr - 1 + LMAX ) % LMAX ] + steps [ (cr - k + LMAX) % LMAX ];
        steps [ cr ]%= MOD ;
    }

    printf("%d",steps [ cr ] );

    return 0;
}