Cod sursa(job #2413107)

Utilizator lucametehauDart Monkey lucametehau Data 22 aprilie 2019 21:38:11
Problema Permutari2 Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>

using namespace std;

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

const int MOD = 10007;

int n, k;

int dp[305][305], f[305];

int main() {
  cin >> n >> k;
  dp[1][1] = f[1] = 1;
  for(int i = 2; i <= n; i++)
    f[i] = f[i - 1] * i % MOD;
  for(int i = 2; i <= n; i++) {
    dp[i][1] = f[i];
    for(int j = 1; j < i; j++)
      dp[i][1] = (dp[i][1] - f[j] * dp[i - j][1] % MOD + MOD) % MOD;
  }
  for(int i = 2; i <= n; i++) {
    for(int j = 1; j < i; j++) {
      for(int l = 2; l <= min(i, k); l++)
        dp[i][l] = (dp[i][l] + dp[j][l - 1] * dp[i - j][1]) % MOD;
    }
  }
  cout << dp[n][k];
  return 0;
}