Cod sursa(job #2966783)

Utilizator toma_ariciuAriciu Toma toma_ariciu Data 18 ianuarie 2023 14:16:21
Problema Arbori Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n, m, k;
long long dp[92][12][92];

int mod(int x)
{
    int aux = x % m;
    if(aux < 0)
        aux += m;
    return aux;
}

int main()
{
    fin >> n >> m >> k;
    for(int i = 1; i <= n; i++)
        dp[1][0][i] = 1;
    for(int i = 2; i <= n; i++)
    {
        dp[i][mod(i - 1)][1] = 1;
        for(int j = 0; j <= m; j++)
        {
            for(int p = 2; p <= n; p++)
            {
                long long comb = 1;
                for(int x = 0; x * p < i; x++)
                {
                    dp[i][j][p] += 1LL * dp[i - x  * p][mod(j - x)][p - 1] * comb;
                    comb = 1LL * comb * (dp[p][mod(k - 1)][n] + x) / (1LL * (x + 1));
                }
            }
        }
    }
    fout << dp[n][k][n] << '\n';
    return 0;
}