#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
int inf = 1e18;
const int mod = 1e9 + 7;
struct bitt {
vector<int> t;
int n;
bitt (int N) : n(N+1) {
t.resize(n+2);
};
void upd(int i, int va) { i ++ ;
for(; i < n; i += (i & -i)) t[i] += va;
};
int get(int i) { i ++ ;
int res = 0;
for(; i > 0; i -= (i & -i)) res += t[i];
return res;
};
int get(int l, int r) { r--;
return get(r ) - get( -- l );
};
};
void solve(){
int n, s, f;
cin >> n >> s >> f;
vector<int> a(n);
iota(a.begin(), a.end(), 1);
int ans = 0;
do {
if(a[0] != s || a[n-1] != f)continue;
bool ok = 1;
int t = (a[0] < a[1]);
//for(int i : a)cout << i << ' ';
//cout << '\n';
//cout << t << ' ';
for(int i = 2; i < n; i ++ ) {
int nt = (a[i-1] < a[i]);
if(t == nt)ok = 0;
t = nt;
//cout << t << ' ';
}
//cout << '\n';
//cout << '\n';
ans = (ans + ok) %mod;
}while(next_permutation(a.begin(), a.end()));
cout << ans << '\n';
};
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
int tt = 1;
//cin >> tt;
while(tt -- ){
solve();
};
};
# | 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... |