Submission #583187

#TimeUsernameProblemLanguageResultExecution timeMemory
583187JomnoiTents (JOI18_tents)C++17
100 / 100
80 ms70880 KiB
#include <bits/stdc++.h> using namespace std; const int MAX_N = 3005; const int MOD = 1e9 + 7; long long dp[MAX_N][MAX_N]; int main() { cin.tie(nullptr)->sync_with_stdio(false); int H, W; cin >> H >> W; for(int i = 0; i <= W; i++) { dp[0][i] = 1; } for(int i = 0; i <= H; i++) { dp[i][0] = 1; } for(int i = 1; i <= H; i++) { for(int j = 1; j <= W; j++) { dp[i][j] += dp[i - 1][j]; dp[i][j] += dp[i - 1][j - 1] * j * 4; if(i >= 2) { dp[i][j] += dp[i - 2][j - 1] * j * (i - 1); } if(j >= 2) { dp[i][j] += dp[i - 1][j - 2] * j * (j - 1) / 2; } dp[i][j] %= MOD; } } dp[H][W]--; dp[H][W] += MOD; dp[H][W] %= MOD; cout << dp[H][W]; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...