Submission #1005385

# Submission time Handle Problem Language Result Execution time Memory
1005385 2024-06-22T11:44:50 Z SulA Kangaroo (CEOI16_kangaroo) C++14
0 / 100
1 ms 348 KB
#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9+7;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int N,cs,cf; cin >> N >> cs >> cf;
    if (N > 40) return cout << 0, 0;
    --cs, --cf;
    long long dp[2][N+1][N][N];
    memset(dp, 0, sizeof dp);

    dp[0][1][0][0] = dp[1][1][0][0] = 1;
    for (int n = 2; n <= N; n++) {
        for (int s = 0; s < n; s++) {
            for (int f = 0; f < n; f++) {
                if (s == f) continue;

                // finding dp[0][...]
                // 0 = right-to-left
                // 1 = left-to-right
                dp[0][n][s][f] = dp[1][n][s][f] = 0;
                for (int p = s+1; p < n; p++) {
                    (dp[0][n][s][f] += dp[1][n-1][p-1][f-(f > s)]) %= MOD;
                }
                for (int p = s-1; p >= 0; p--) {
                    (dp[1][n][s][f] += dp[0][n-1][p][f-(f > s)]) %= MOD;
                }
            }
        }
    }
    cout << (dp[0][N][cs][cf] + dp[0][N][cs][cf]) % MOD;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Incorrect 0 ms 348 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Incorrect 0 ms 348 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Incorrect 0 ms 348 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Incorrect 0 ms 348 KB Output isn't correct
3 Halted 0 ms 0 KB -