#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const int maxn = 55;
int n, cs, cf;
int dp[maxn][maxn][maxn][2];
int f(int l, int r, int t, int dir) {
int &ret = dp[l][r][t][dir];
if(ret != -1) return ret;
if(l + r == 1) return ret = (l ^ 1) == dir;
if((!dir and !l) or (dir and !r)) return ret = 0;
ret = 0;
if(!dir) {
for(int i = 1; i <= l; i++) {
if(i == t) continue;
ret += f(i - 1, l + r - i, t - (i < t), dir ^ 1);
if(ret >= mod) ret -= mod;
}
} else {
for(int i = l + 1; i <= l + r; i++) {
if(i == t) continue;
ret += f(i - 1, l + r - i, t - (i < t), dir ^ 1);
if(ret >= mod) ret -= mod;
}
} return ret;
}
int main(int argc, char const *argv[])
{
// freopen("in", "r", stdin);
memset(dp, -1, sizeof dp);
cin >> n >> cs >> cf;
int l = f(cs - 1, n - cs, cf - (cs < cf), 0);
int r = f(cs - 1, n - cs, cf - (cs < cf), 1);
cout << (l + r) % mod << endl;
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
1656 KB |
Output is correct |
2 |
Correct |
3 ms |
1656 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
1656 KB |
Output is correct |
2 |
Correct |
3 ms |
1656 KB |
Output is correct |
3 |
Correct |
3 ms |
1656 KB |
Output is correct |
4 |
Correct |
4 ms |
1556 KB |
Output is correct |
5 |
Correct |
3 ms |
1656 KB |
Output is correct |
6 |
Correct |
4 ms |
1656 KB |
Output is correct |
7 |
Correct |
4 ms |
1656 KB |
Output is correct |
8 |
Correct |
3 ms |
1656 KB |
Output is correct |
9 |
Correct |
4 ms |
1656 KB |
Output is correct |
10 |
Correct |
4 ms |
1656 KB |
Output is correct |
11 |
Correct |
4 ms |
1656 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
1656 KB |
Output is correct |
2 |
Correct |
3 ms |
1656 KB |
Output is correct |
3 |
Correct |
3 ms |
1656 KB |
Output is correct |
4 |
Correct |
4 ms |
1556 KB |
Output is correct |
5 |
Correct |
3 ms |
1656 KB |
Output is correct |
6 |
Correct |
4 ms |
1656 KB |
Output is correct |
7 |
Correct |
4 ms |
1656 KB |
Output is correct |
8 |
Correct |
3 ms |
1656 KB |
Output is correct |
9 |
Correct |
4 ms |
1656 KB |
Output is correct |
10 |
Correct |
4 ms |
1656 KB |
Output is correct |
11 |
Correct |
4 ms |
1656 KB |
Output is correct |
12 |
Runtime error |
5 ms |
3064 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
13 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
1656 KB |
Output is correct |
2 |
Correct |
3 ms |
1656 KB |
Output is correct |
3 |
Correct |
3 ms |
1656 KB |
Output is correct |
4 |
Correct |
4 ms |
1556 KB |
Output is correct |
5 |
Correct |
3 ms |
1656 KB |
Output is correct |
6 |
Correct |
4 ms |
1656 KB |
Output is correct |
7 |
Correct |
4 ms |
1656 KB |
Output is correct |
8 |
Correct |
3 ms |
1656 KB |
Output is correct |
9 |
Correct |
4 ms |
1656 KB |
Output is correct |
10 |
Correct |
4 ms |
1656 KB |
Output is correct |
11 |
Correct |
4 ms |
1656 KB |
Output is correct |
12 |
Runtime error |
5 ms |
3064 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
13 |
Halted |
0 ms |
0 KB |
- |