Submission #1224913

#TimeUsernameProblemLanguageResultExecution timeMemory
1224913PenguinsAreCuteTents (JOI18_tents)C++17
0 / 100
0 ms324 KiB
#include <bits/stdc++.h> using namespace std; const int MOD = 1e9 + 7; int exp(int a, int b) { return (b?1LL*exp(1LL*a*a%MOD,b/2)*(b&1?a:1)%MOD:1); } int solve(int h, int c) { int fact[3005]; fact[0] = 1; for(int i=1;i<3005;i++) fact[i] = 1LL * fact[i-1] * i % MOD; int ans = MOD - 1; for(int r1=0;r1<=h;r1++) for(int r2=0;r2<=h-r1;r2++) for(int c2=0;c2<=c;c2++) { int c1 = (r1 + 2 * r2 - 2 * c2); if(c1 < 0 || c1 + c2 > c || c1 < 2 * r2) continue; ans = (ans + 1LL * fact[h] * fact[c] % MOD * exp(fact[r1], MOD-2) % MOD * exp(fact[r2], MOD-2) % MOD * exp(fact[h-r1-r2], MOD-2) % MOD * exp(fact[c1], MOD-2) % MOD * exp(fact[c2], MOD-2) % MOD * exp(fact[c-c1-c2], MOD-2) % MOD * fact[r1] % MOD * exp(fact[2*c2], MOD-2) % MOD * exp(fact[r1-2*c2], MOD-2) * fact[c1] % MOD * exp(fact[2*r2], MOD-2) * exp(fact[c1-2*r2], MOD-2) % MOD * exp(4,r1-2*c2) % MOD * fact[r1-2*c2]) % MOD; } return ans; } int main() { int h, c; cin >> h >> c; cout << solve(h, c); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...