Submission #995545

#TimeUsernameProblemLanguageResultExecution timeMemory
995545nika7878Tents (JOI18_tents)C++14
100 / 100
84 ms71116 KiB
#include <bits/stdc++.h>
using namespace std;
long long dp[3005][3005];
int main()
{
    int n, m;
    cin >> n >> m;
    long long mod=1e9+7;
    for (int i=0; i<=3000; i++)
        dp[i][0]=dp[0][i]=1;
    for (int i=1; i<=3000; i++) 
    {
        for (int j=1; j<=3000; j++) 
        {
            dp[i][j]+=dp[i-1][j];
            dp[i][j]+=dp[i-1][j-1]*4*j;
            if (j>=2) 
                dp[i][j]+=dp[i-1][j-2]*j*(j-1)/2;
            if (i >= 2) 
                dp[i][j]+=dp[i-2][j-1]*(i-1)*j;
            dp[i][j]%=mod;
        }
    } 
    cout << dp[n][m]-1;

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