Submission #769334

#TimeUsernameProblemLanguageResultExecution timeMemory
769334LucaIlieTents (JOI18_tents)C++17
48 / 100
143 ms354472 KiB
#include <bits/stdc++.h>

using namespace std;

const int MAX_N = 500;
const int MOD = 1e9 + 7;

long long dp[MAX_N][MAX_N][MAX_N];

int main() {
    int n, m;

    cin >> n >> m;
    dp[0][m][0] = 1;
    for ( int i = 1; i <= n; i++ ) {
        for ( int c = 0; c <= m; c++ ) {
            for ( int l = 0; l <= i; l++ ) {
                dp[i][c][l] = (l > 0 ? dp[i - 1][c][l - 1] : 0)
                              + dp[i - 1][c + 1][l] * (c + 1) * 4
                              + dp[i - 1][c + 2][l] * (c + 2) * (c + 1) / 2
                              + dp[i - 1][c + 1][l + 1] * (c + 1) * (l + 1);
                dp[i][c][l] %= MOD;
            }
        }
    }

    int sol = 0;

    for ( int c = 0; c < m; c++ ) {
        for ( int l = 0; l <= n; l++ )
            sol = (sol + dp[n][c][l]) % MOD;
    }

    cout << sol;

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...