Cod sursa(job #2563681)

Utilizator stefdascalescuStefan Dascalescu stefdascalescu Data 1 martie 2020 13:31:38
Problema Permutari2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<bits/stdc++.h>
using namespace std;
ifstream f("permutari2.in");
ofstream g("permutari2.out");

const int mod = 10007;

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

int ds[302], sum[302];

int main()
{
    f >> n >> k;
    dp[0][0] = fact[0] = 1;
    for(int i = 1; i <= n; ++i)
        fact[i] = (fact[i-1] * i) % mod;
    for(int i = 1; i <= n; ++i)
    {
        sum[i] = fact[i];
        for(int j = 1; j < i; ++j)
        {
            sum[i] = sum[i] - ((sum[j] * fact[i - j]) % mod);
            if(sum[i] < 0)
                sum[i] += mod;
        }
    }
    for(int i = 0; i < n; ++i)
        for(int j = 0; j <= i; ++j)
        {
            int ts = 0;
            for(int nxt = i+1; nxt <= n; ++nxt)
            {
                dp[nxt][j+1] = dp[nxt][j+1] + dp[i][j] * sum[nxt - i];
                dp[nxt][j+1] %= mod;
                ts = fact[nxt - i];
            }
        }
    int sum = 0;
    for(int i = 1; i <= n; ++i)
        sum = (sum + dp[n][i]) % mod;
    g << dp[n][k];
    return 0;
}