Cod sursa(job #1837602)

Utilizator lflorin29Florin Laiu lflorin29 Data 29 decembrie 2016 23:57:05
Problema Permutari2 Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <bits/stdc++.h>

using namespace std;

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

const int N = 300;
const int Mod = 10007;

int n, k;
int dp[N + 1][N + 1];

void Fix(int &x) {
  while (x < 0)x += Mod;
  x %= Mod;
}

int main() {
  dp[0][0] = 1;
  in >> n >> k;

  for (int i = 1, Fact = 1; i <= n; ++i) {
    Fact = (Fact * i) % Mod;
    dp[i][1] = Fact;

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

      dp[i][1] -= dp[i][j];
      Fix(dp[i][1]);
    }
  }
  out << dp[n][k];
  return 0;
}