제출 #135272

#제출 시각아이디문제언어결과실행 시간메모리
135272mohammedehab2002Tents (JOI18_tents)C++11
100 / 100
348 ms36088 KiB
#include <iostream> #include <string.h> using namespace std; #define mod 1000000007 int dp[3005][3005]; int solve(int n,int m) { if (!n || !m) return 1; if (dp[n][m]!=-1) return dp[n][m]; int ans=(solve(n-1,m)+4LL*m*solve(n-1,m-1))%mod; if (m>=2) ans=(ans+1LL*m*(m-1)/2*solve(n-1,m-2))%mod; if (n>=2) ans=(ans+(n-1LL)*m*solve(n-2,m-1))%mod; return dp[n][m]=ans; } int main() { int n,m; cin >> n >> m; memset(dp,-1,sizeof(dp)); cout << (solve(n,m)-1+mod)%mod; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...