Cod sursa(job #1496733)

Utilizator BLz0rDospra Cristian BLz0r Data 5 octombrie 2015 15:21:59
Problema Permutari2 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>

#define maxn 305
#define mod 10007

FILE*f=fopen("permutari2.in","r");
FILE*g=fopen("permutari2.out","w");

int n,k;
int D[maxn][maxn],F[maxn];

int main () {

    fscanf(f,"%d %d",&n,&k);

    F[0] = 1;
    for ( int i = 1 ; i <= n ; ++i ){
        F[i] = (F[i-1]*i)%mod;
    }

    D[1][1] = 1;
    for ( int i = 2 ; i <= n ; ++i ){

        int total = 0;
        for ( int j = 2 ; j <= i ; ++j ){

            for ( int p = j-1 ; p <= i-1 ; ++p ){
                D[i][j] = (D[i][j] + D[p][j-1]*D[i-p][1])%mod;
            }
            total += D[i][j]; if ( total >= mod )    total -= mod;
        }

        D[i][1] = F[i]-total; if ( D[i][1] < 0 ) D[i][1] += mod;
    }

    fprintf(g,"%d\n",D[n][k]);

    fclose(f);
    fclose(g);

    return 0;
}