# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
870070 | blackslex | Kangaroo (CEOI16_kangaroo) | C++17 | 1 ms | 344 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 2005, M = 1e9 + 7;
ll n, cs, cf, ed = 2, dp[N][N];
int main() {
scanf("%lld %lld %lld", &n, &cs, &cf);
dp[1][1] = 1; ed -= (cs == 1 || cf == 1);
for (int i = 1; i < n; i++) {
if (i + 1 == cs || i + 1 == cf) {
for (int j = 1; j <= i; j++) {
dp[i + 1][j + 1] += dp[i][j]; dp[i + 1][j + 1] %= M;
dp[i + 1][j] += dp[i][j]; dp[i + 1][j] %= M;
}
ed--;
} else {
for (int j = 1; j <= i; j++) {
dp[i + 1][j + 1] += (j + 1 - ed) * dp[i][j]; dp[i + 1][j + 1] %= M;
dp[i + 1][j - 1] += (j - 1) * dp[i][j]; dp[i + 1][j - 1] %= M;
}
}
}
printf("%lld", dp[n][1]);
}
Compilation message (stderr)
# | 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... |