Submission #320089

#TimeUsernameProblemLanguageResultExecution timeMemory
320089keta_tsimakuridzeTents (JOI18_tents)C++14
100 / 100
177 ms71268 KiB
#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
long long n,m,k,i,dp[3005][3005];
int main(){
	cin>>n>>m;
	dp[0][0]=1;
	for(k=1;k<=max(n,m);k++)
	dp[k][0]=dp[0][k]=1;
	for(k=1;k<=n;k++){	
	for(i=1;i<=m;i++){
		dp[k][i]=dp[k-1][i];
		if(i>=2) dp[k][i]+=dp[k-1][i-2]%mod*(i*(i-1))/2%mod;
		dp[k][i]+=4*i*dp[k-1][i-1]%mod;
		if(k>=2) dp[k][i]+=dp[k-2][i-1]%mod*i%mod*(k-1)%mod;
		dp[k][i]%=mod;
	//	cout<<k<<" "<<i<<" "<<dp[k][i]<<endl;
	
	} }
	cout<<(dp[n][m]-1+mod)%mod;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...