Submission #1005385

#TimeUsernameProblemLanguageResultExecution timeMemory
1005385SulAKangaroo (CEOI16_kangaroo)C++14
0 / 100
1 ms348 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...