Submission #667955

#TimeUsernameProblemLanguageResultExecution timeMemory
667955600MihneaBoard (CEOI13_board)C++17
40 / 100
3 ms1492 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll nxt(ll a, char ch) { if (ch == '1') return 2 * a; if (ch == '2') return 2 * a + 1; if (ch == 'U') return a / 2; if (ch == 'L') return a - 1; if (ch == 'R') return a + 1; assert(0); } ll nxt(ll a, string s) { for (auto &ch : s) { a = nxt(a, ch); } return a; } int get_level(ll x) { if (x == 1) { return 1; } else { assert(x >= 2); return 1 + get_level(x / 2); } } ll solve(ll a, ll b) { if (a == b) { return 0; } if (get_level(b) > get_level(a)) { return 1 + solve(a, b / 2); } if (get_level(a) > get_level(b)) { return 1 + solve(a / 2, b); } assert(get_level(a) == get_level(b)); return min(abs(a - b), 2 + solve(a / 2, b / 2)); } int main() { #ifdef ONPC freopen ("input.txt", "r", stdin); #endif // ONPC #ifndef ONPC ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); #endif // ONPC string s, t; cin >> s >> t; ll a = nxt(1, s); ll b = nxt(1, t); cout << solve(a, b) << "\n"; return 0; } /** **/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...