#include <bits/stdc++.h>
using namespace std;
const int maxn = 2010;
int dp[maxn][maxn];
int n;
int ini, fim;
int solve(int i, int k) {
if (i == n && k == 1) return 1;
else if (i == n) return 0;
if (dp[i][k] != -1) return dp[i][k];
int caso1 = solve(i+1, k+1);
int caso2 = (k ? solve(i+1, k-1) : 0);
int ans = caso1 + caso2;
if (i == ini || i == fim) return dp[i][k] = ans;
else if (i < ini && i < fim) return dp[i][k] = (k+1)*ans;
else if (i < ini || i < fim) return dp[i][k] = (k)*ans;
return dp[i][k] = (k-1)*ans;
}
int main() {
memset(dp, -1, sizeof dp);
cin >> n;
cin >> ini >> fim;
cout << solve(1, 0) << '\n';
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
9 ms |
16108 KB |
Output is correct |
2 |
Incorrect |
9 ms |
16108 KB |
Output isn't correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
9 ms |
16108 KB |
Output is correct |
2 |
Incorrect |
9 ms |
16108 KB |
Output isn't correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
9 ms |
16108 KB |
Output is correct |
2 |
Incorrect |
9 ms |
16108 KB |
Output isn't correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
9 ms |
16108 KB |
Output is correct |
2 |
Incorrect |
9 ms |
16108 KB |
Output isn't correct |