Submission #1277971

#TimeUsernameProblemLanguageResultExecution timeMemory
1277971WH8Tents (JOI18_tents)C++20
100 / 100
227 ms71484 KiB
#include <bits/stdc++.h>
using namespace std;
#define pll pair<int, int>
#define int long long
#define mp make_pair
#define pb push_back
#define f first
#define s second
#define ld long double
vector<vector<int>> mem(3005, vector<int>(3005, -1));
int h,w;
const int m=1000000007;
int dp(int c, int e){
	if(c>=w or e<=0)return 1;
	if(mem[c][e]!=-1)return mem[c][e];
	return mem[c][e]=(dp(c+1, e)+4*e%m*dp(c+1, e-1)%m+e*(e-1)/2%m*dp(c+1, e-2)%m+(w-c-1)*e%m*dp(c+2, e-1)%m)%m;
}
signed main(){
	cin>>h>>w;
	cout<<dp(0, h)-1;
}
	
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...