제출 #1122764

#제출 시각아이디문제언어결과실행 시간메모리
1122764SulATents (JOI18_tents)C++20
100 / 100
117 ms70928 KiB
#include <bits/stdc++.h> using namespace std; #include <ext/pb_ds/tree_policy.hpp> #include <ext/pb_ds/assoc_container.hpp> //#pragma GCC target("popcnt") using namespace __gnu_pbds; using namespace std; using ordered_set = tree<int, null_type, less_equal<>, rb_tree_tag, tree_order_statistics_node_update>; #define popcount __builtin_popcountll #define all(a) (a).begin(), (a).end() const int MOD = 1e9+7; signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int h,w; cin >> h >> w; long long dp[h+1][w+1] = {}; for (int i = 0; i <= h; i++) dp[i][0] = 1; for (int j = 0; j <= w; j++) dp[0][j] = 1; for (int i = 1; i <= h; i++) { for (int j = 1; j <= w; j++) { dp[i][j] = (dp[i-1][j] + dp[i-1][j-1] * 4*j) % MOD; if (i >= 2) (dp[i][j] += dp[i-2][j-1] * (i-1) * j % MOD) %= MOD; if (j >= 2) (dp[i][j] += dp[i-1][j-2] * j * (j-1) / 2) %= MOD; } } cout << (MOD + dp[h][w] - 1) % MOD; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...