Submission #254554

#TimeUsernameProblemLanguageResultExecution timeMemory
254554baboTents (JOI18_tents)C++14
100 / 100
145 ms71452 KiB
#include <bits/stdc++.h>
#define L long long
#define mod 1000000007ll

using namespace std;

L n,m;
L dp[3030][3030];

int main()
{
	scanf("%lld %lld",&n,&m);
	L i,j;
	for(i=0;i<=n;i++)
		dp[i][0]=1;
	for(j=0;j<=m;j++)
		dp[0][j]=1;
	for(i=1;i<=n;i++)
	{
		dp[i][1]=(1+4*i+i*(i-1)/2)%mod;
		for(j=2;j<=m;j++)
		{
			dp[i][j]+=dp[i][j-1];
			if(i>=2) dp[i][j]+=dp[i-2][j-1]*(i*(i-1)/2%mod)%mod;
			dp[i][j]+=dp[i-1][j-1]*4*i%mod;
			dp[i][j]+=dp[i-1][j-2]*i%mod*(j-1)%mod;
			dp[i][j]%=mod;
		}
	}
	/*for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
		{
			printf("%lld ",dp[i][j]);
		}
		puts("");
	}*/
	printf("%lld",(dp[n][m]+mod-1)%mod);

}

Compilation message (stderr)

tents.cpp: In function 'int main()':
tents.cpp:12:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld %lld",&n,&m);
  ~~~~~^~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...