Cod sursa(job #1496724)

Utilizator BLz0rDospra Cristian BLz0r Data 5 octombrie 2015 15:11:00
Problema Permutari2 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <cstdio>
using namespace std;

int D[301][301], Perm[301];
const int Mod = 10007;

int main (){

    freopen ( "permutari2.in", "r", stdin );
    freopen ( "permutari2.out", "w", stdout );
    cin.sync_with_stdio(false);

    int N, K, x, y;

    cin >> N >> K;

    Perm[0] = 1;
    for ( int i = 1 ; i <= N ; ++i )
        Perm[i] = ( Perm[i-1]*i ) % Mod;

    D[1][1] = 1;

    for ( int i = 2 ; i <= N ; ++i ){
        x = Perm[i];
        for ( int j = 2 ; j <= i ; ++j ){
            y = 0;
            for ( int k = j-1 ; k < i ; ++k ){
                y += D[k][j-1] * D[i-k][1] % Mod;
                if ( y >= Mod )
                    y -= Mod;
            }
            D[i][j] = y;
            x -= y;
            if ( x < 0 )
                x += Mod;
        }
        D[i][1] = x;
    }

    cout << D[N][K];

    return 0;
}