Submission #68675

#TimeUsernameProblemLanguageResultExecution timeMemory
68675IvanCTents (JOI18_tents)C++17
100 / 100
312 ms71920 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN = 3010; const int MOD = 1e9 + 7; ll escolhe2(ll x){ return (x * (x-1))/2; } ll dp[MAXN][MAXN]; int H,W; ll solve(int a,int b){ if(a < 0 || b < 0) return 0; if(a == 0 || b == 0) return 1; if(dp[a][b] != -1) return dp[a][b]; ll qtd = solve(a-1,b); qtd += solve(a - 1,b - 2)*escolhe2(b); qtd += 4*solve(a-1,b-1)*b; qtd += solve(a - 2,b - 1)*b*(a-1); if(a == H && b == W) qtd--; qtd %= MOD; return dp[a][b] = qtd; } int main(){ memset(dp,-1,sizeof(dp)); cin >> H >> W; cout << solve(H,W) << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...