Cod sursa(job #2314464)

Utilizator 12222Fendt 1000 Vario 12222 Data 8 ianuarie 2019 15:57:59
Problema Permutari2 Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>

using namespace std;

const int Mod=10007;

int n,k;
int dp[305][305],fact[305];

inline void Solve()
{
    FILE *fin,*fout;
    fout=fopen("permutari2.out","wt");
    fin=fopen("permutari2.in","rt");

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

    fact[1]=1;
    for(int i=2;i<=n;i++)
        fact[i]=(fact[i-1]*i)%Mod;

    dp[1][1]=dp[2][1]=dp[2][2]=1;
    for(int i=3;i<=n;i++)
    {
        dp[i][1]=fact[i];

        for(int j=2;j<=i;j++)
        {
            for(int p=j-1;p<i;p++)
                dp[i][j]=(dp[i][j]+dp[p][j-1]*dp[i-p][1])%Mod;

            dp[i][1]-=dp[i][j];
            if(dp[i][1]<0)dp[i][1]+=Mod;
        }
    }

    fprintf(fout,"%d",dp[n][k]);

    fclose(fin);
    fclose(fout);
}
int main()
{
    Solve();
    return 0;
}