제출 #1193901

#제출 시각아이디문제언어결과실행 시간메모리
1193901MuhammadSaramKangaroo (CEOI16_kangaroo)C++20
100 / 100
51 ms55112 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long

const int M = 2000 + 2, mod = 1e9 + 7;

int dp[M][M][3];

signed main()
{
	int n,s,e;
	cin>>n>>s>>e;
	dp[1][1][(s==1 or e==1)]=1;
	for (int i=2;i<=n;i++)
		for (int j=1;j<=i;j++)
		{
			if (i==s or i==e)
				for (int k=1;k<=2;k++)
					dp[i][j][k]=(dp[i-1][j-1][k-1]+dp[i-1][j][k-1])%mod;
			else
				for (int k=0;k<=2;k++)
					dp[i][j][k]=(dp[i-1][j-1][k]*(j-k)*(j>=k)+dp[i-1][j+1][k]*j)%mod;
		}
	cout<<dp[n][1][2]<<endl;

	return 0;	
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...