Submission #961268

#TimeUsernameProblemLanguageResultExecution timeMemory
961268n3rm1nTents (JOI18_tents)C++17
100 / 100
307 ms71032 KiB
#include<bits/stdc++.h> #define endl '\n' using namespace std; const int MAXN = 3e3 + 10; void speed() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); } int n, m; long long dp[MAXN][MAXN]; long long mod = 1e9 + 7; void solve() { cin >> n >> m; for (int i = 0; i <= n; ++ i) dp[i][0] = 1; for (int j = 0; j <= m; ++ j) dp[0][j] = 1; for (long long i = 1; i <= n; ++ i) { for (long long j = 1; j <= m; ++ j) { /// 0. dp[i][j] = dp[i-1][j]; /// 1. x .... x if(j >= 2) { dp[i][j] += (dp[i-1][j-2] * ((j * (j - 1) / 2) % mod)) % mod; dp[i][j] %= mod; } /// 2. x /// . /// . /// x if(i >= 2) { dp[i][j] += dp[i-2][j-1] * (i-1) * j; dp[i][j] %= mod; } /// 3. x dp[i][j] += (dp[i-1][j-1] * j * 4) % mod; dp[i][j] %= mod; } } long long ans = (dp[n][m] + mod - 1) % mod; cout << ans << endl; } int main() { speed(); solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...