#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2005, MOD = 1e9+7;
int dp[MAXN][MAXN];
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, ini, fim; cin>>n>>ini>>fim;
int ans = 0;
dp[n+1][1] = 1;
for(int x = 0; x < 2; x++)
for(int y = 0; y < 2; y++){
if(x == 0 && ini == 1)continue;
int qtd = 0;
for(int i = n; i >= 1; i--)
for(int c = 1; c <= n; c++){
if(i == ini){
if(x == 0)dp[i][c] = dp[i+1][c];
else dp[i][c] = dp[i+1][c+1];
qtd++;
}
else if(i == fim){
if(y == 0)dp[i][c] = dp[i+1][c];
else dp[i][c] = dp[i+1][c+1];
qtd++;
}else{
dp[i][c] = (dp[i+1][c+1] * (c + 1 - qtd))%MOD
+ (dp[i+1][c-1]*(c-1))%MOD;
dp[i][c] %= MOD;
}
}
ans = (ans + dp[2][1])%MOD;
}
cout<<ans<<"\n";
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |