Submission #125563

#TimeUsernameProblemLanguageResultExecution timeMemory
125563tutis캥거루 (CEOI16_kangaroo)C++17
36 / 100
2063 ms18572 KiB
/*input 4 2 3 */ #pragma GCC optimize ("O3") #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; const ll modulo = 1000000007; int sgn(ll x) { if (x < 0) return -1; if (x > 0) return 1; return 0; } map<tuple<int, int, int, int>, ll>M; ll f(int n, int a, int b, int s) { if (a == b) return 0; if (M.count(make_tuple(n, a, b, s))) return M[make_tuple(n, a, b, s)]; if (n == 2) { if (sgn(b - a) != s) return 0; else return 1; } ll ret = 0; for (int c = 1; c <= n; c++) { if (sgn(b - c) == s) { ret += f(n - 1, a - (a > b), c - (c > b), -s); } } ret %= modulo; return M[make_tuple(n, a, b, s)] = ret; } int main() { int n, a, b; cin >> n >> a >> b; ll ans = f(n, a, b, 1) + f(n, a, b, -1); ans %= modulo; cout << ans << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...