Submission #1358894

#TimeUsernameProblemLanguageResultExecution timeMemory
1358894petezaTents (JOI18_tents)C++20
100 / 100
112 ms71320 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll mod = 1e9+7;

ll h, w;
ll dp[3005][3005];

ll calc(int h, int w) {
    if((h < 0 || w < 0)) return 0;
    if(h == 0 || w == 0) return 1;
    if(~dp[h][w]) return dp[h][w];
    dp[h][w] = calc(h-1, w);
    dp[h][w] = (dp[h][w] + calc(h-1, w-1)*w*4) % mod;
    dp[h][w] = (dp[h][w] + calc(h-2, w-1)*w*(h-1)) % mod;
    dp[h][w] = (dp[h][w] + calc(h-1, w-2)*(w*(w-1)/2%mod)) % mod;
    return dp[h][w];
}

int main() {
    memset(dp, -1, sizeof dp);
    cin >> h >> w;
    cout << (calc(h, w)+mod-1)%mod;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...