Cod sursa(job #1209127)

Utilizator mihaimusatMihai Musat mihaimusat Data 17 iulie 2014 10:05:57
Problema Permutari2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#define MOD 10007
#define MAXN 305

using namespace std;

int N, K, DP[MAXN][MAXN], F[MAXN];

void Solve() {
    F[0] = 1;
    for (int i = 1; i <= N; ++i)
        F[i] = (i * F[i - 1]) % MOD;
    DP[1][1] = 1;
    for (int n = 2; n <= N; ++n) {
        int SumDP = 0;
        for (int k = 2; k <= n; ++k) {
            for (int p = k - 1; p < n; ++p)
                DP[n][k] = (DP[n][k] + DP[p][k - 1] * DP[n - p][1]) % MOD;
            SumDP += DP[n][k];
        }
        DP[n][1] = (F[n] - SumDP % MOD + MOD) % MOD;
    }
}

void Read() {
    ifstream f("permutari2.in");
    f >> N >> K;

}

void Print() {
    ofstream g("permutari2.out");
    g << DP[N][K] << "\n";

}

int main() {
    Read();
    Solve();
    Print();
    return 0;
}