Cod sursa(job #2511372)

Utilizator Mihai145Oprea Mihai Adrian Mihai145 Data 18 decembrie 2019 21:19:50
Problema Permutari2 Scor 100
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>

using namespace std;

ifstream fin("permutari2.in");
ofstream fout("permutari2.out");

const int NMAX = 300;
const int MOD = 10007;

int N, K;
int dp[NMAX + 5][NMAX + 5];

int main()
{
    fin >> N >> K;

    dp[1][1] = 1;
    int fact = 1;

    for(int l = 2; l <= N; l++)
        {
            fact = (fact * l) % MOD;

            dp[l][1] = fact;

            for(int j = 2; j <= l; j++)
                {
                    long long val = 0;

                    ///dp[l][j] = sum(dp[x][j - 1] * dp[l - x][1])

                    for(int p = j - 1; p < l; p++)
                        val = val + 1LL * dp[p][j - 1] * dp[l - p][1];

                    dp[l][j] = val % MOD;
                    dp[l][1] = (dp[l][1] - dp[l][j] + MOD) % MOD;
                }
        }

    fout << dp[N][K] << '\n';

    return 0;
}