#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define all(x) x.begin(),x.end()
#define ld long double
using namespace std;
const ll sz=1e5+100;
const ll mod=1e9+7;
int main()
{
ll n,cs,cf;cin>>n>>cs>>cf;
ll dp[n+5][n+5][2];
for(int i=0;i<n+5;i++){
for(int j=0;j<n+5;j++){
dp[i][j][0]=dp[i][j][1]=0;
}
}
dp[0][cs][0]=1;dp[0][cs][1]=1;
for(int i=1;i<n;i++){
for(int j=1;j<=n;j++){
if(j==cs) continue;
if(i!=n-1 and j==cf) continue;
dp[i][j][0]=0;dp[i][j][1]=0;
for(int k=1;k<j;k++){
dp[i][j][1]+=dp[i-1][k][0];dp[i][j][1]%=mod;
}
for(int k=j+1;k<=n;k++){
dp[i][j][0]+=dp[i-1][k][1];dp[i][j][0]%=mod;
}
}
}
cout<<(dp[n-1][cf][0]+dp[n-1][cf][1])%mod<<endl;
}
| # | 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... |