Cod sursa(job #1678090)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 6 aprilie 2016 23:35:49
Problema Permutari2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <bits/stdc++.h>

const int DIM = 1 << 9;
const int MOD = 10007;
using namespace std;

int D[DIM][DIM], P[DIM], N, K;

int main() {

    FILE *input_file  = fopen( "permutari2.in" , "r" );
    FILE *output_file = fopen( "permutari2.out", "w" );

    fscanf( input_file, "%d %d", &N, &K );
    D[1][1] = P[1] = 1;

    for( int i = 2; i <= N; i ++ ) {
        P[i] = D[1][i] = ( P[i - 1] * i ) % MOD;

        for( int j = 2; j <= i; j ++ ) {
            for( int k = i - 1; k >= j - 1; k -- )
                D[j][i] = ( D[j][i] + D[j - 1][k] * D[1][k] ) % MOD;

            D[1][i] = ( D[1][i] - D[j][i] < 0 ) ? ( D[1][i] - D[j][i] + MOD ) : ( D[1][i] - D[j][i] );
        }
    }

    fprintf( output_file, "%d\n", D[K][N] );

    return 0;
}