Submission #82389

#TimeUsernameProblemLanguageResultExecution timeMemory
82389KewoTents (JOI18_tents)C++14
100 / 100
297 ms71496 KiB
#include <bits/stdc++.h> #define pb push_back #define ppb pop_back #define fi first #define se second #define mid ((x + y) / 2) #define left (ind * 2) #define right (ind * 2 + 1) #define mp make_pair #define timer ((double)clock() / CLOCKS_PER_SEC) #define endl "\n" #define spc " " #define d1(x) cerr<<#x<<":"<<x<<endl #define d2(x, y) cerr<<#x<<":"<<x<<" "<<#y<<":"<<y<<endl #define d3(x, y, z) cerr<<#x<<":"<<x<<" "<<#y<<":"<<y<<" "<<#z<<":"<<z<<endl #define fast_io() ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0) using namespace std; typedef long long int lli; typedef pair<int, int> ii; typedef pair<ii, int> iii; typedef pair<double, double> dd; const int N = (int)(3e3 + 5); const int LOG = (int)(20); const int mod = (int)(1e9 + 7); lli n, m, dp[N][N]; lli f(lli x, lli y) { lli re = 0; if(x < 0 || y < 0) return 0; if(x == 0 || y == 0) return 1; if(dp[x][y] != -1) return dp[x][y]; re += f(x - 1, y); re += f(x - 1, y - 2) * y * (y - 1) / 2; re += f(x - 2, y - 1) * (x - 1) * y; re += f(x - 1, y - 1) * 4 * y; return dp[x][y] = re % mod; } int main() { fast_io(); // freopen("inp.in", "r", stdin); cin >> n >> m; memset(dp, -1, sizeof dp); cout << f(n, m) - 1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...