Submission #81758

#TimeUsernameProblemLanguageResultExecution timeMemory
81758SaboonKangaroo (CEOI16_kangaroo)C++14
0 / 100
2 ms508 KiB
#include <iostream> #include <sstream> #include <queue> #include <stack> #include <vector> #include <cstring> #include <cmath> #include <map> #include <unordered_map> #include <set> #include <algorithm> #include <iomanip> #define F first #define S second #define PB push_back #define PF push_front #define MP make_pair using namespace std; typedef long long ll; typedef long double ld; typedef pair<int,int> pii; const int maxn = 200 + 37; const int mod = 1e9 + 7; int dp[maxn][maxn][maxn][3]; int main() { ios_base::sync_with_stdio(false); int n, s, t; cin >> n >> s >> t; dp[2][1][2][1] = 1; dp[2][2][1][0] = 1; for (int i = 3; i <= n; i++) { for (int st = i; st >= 1; st --) { for (int en = 1; en <= i; en ++) { if (en >= st) { dp[i][st][en][1] = (dp[i - 1][st][en - 1][0] + dp[i][st + 1][en][1]); } else { dp[i][st][en][1] = (dp[i - 1][st][en][0] + dp[i][st + 1][en][1]); } // cout << i << " " << st << " -> " << en << " right " << dp[i][st][en][1] << endl; } } for (int st = 1; st <= i; st ++) { for (int en = 1; en <= i; en ++) { if (en >= st) { dp[i][st][en][0] = (dp[i - 1][st][en - 1][1] + dp[i][st - 1][en][0]) % mod; } else { dp[i][st][en][0] = (dp[i - 1][st][en][1] + dp[i][st - 1][en][0]) % mod; } // cout << i << " " << st << " -> " << en << " left " << dp[i][st][en][0] << endl; } } } cout << (dp[n][s][t][1] + dp[n][s][t][0]) % mod << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...