#include<bits/stdc++.h>
#define debug(x) cerr << #x << " " << x << "\n"
#define debugs(x) cerr << #x << " " << x << " "
#pragma GCC optimize("Ofast")
#define int long long
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int range_rng(int l, int r)
{
return uniform_int_distribution<int>(l,r)(rng);
}
const int mod=1e9+7;
int dp[2005][2005];
void add(int &a, int b)
{
if (b<0)
return;
a+=b;
if (a>=mod)
a-=mod;
}
signed main()
{
//ifstream fin("felinare.in");
//ofstream fout("felinare.out");
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,i,j,cs,cf,blocked;
cin >> n >> cs >> cf;
blocked=0;
dp[0][0]=1;
for (i=1;i<=n;i++)
{
for (j=1;j<=i;j++)
{
if (i==cs || i==cf)
{
add(dp[i][j],dp[i-1][j-1]*1);
add(dp[i][j],dp[i-1][j]*1);
blocked++;
}
else
{
add(dp[i][j],dp[i-1][j-1]*((j-1)+1-blocked));
add(dp[i][j],dp[i-1][j+1]*((j+1)-1));
}
}
}
cout << dp[n][1];
return 0;
}
# | 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... |