제출 #667965

#제출 시각아이디문제언어결과실행 시간메모리
667965600Mihnea게임판 (CEOI13_board)C++17
40 / 100
1084 ms1228 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; template<typename T> void print(vector<T> v) { cout << " ---> "; for (auto &x : v) { cout << x << " "; } cout << "\n"; } vector<int> solve(string s) { vector<int> cur; for (auto &ch : s) { if (ch == '1') { cur.push_back(0); continue; } if (ch == '2') { cur.push_back(1); continue; } if (ch == 'U') { cur.pop_back(); continue; } if (ch == 'R') { int p = (int) cur.size() - 1; while (1) { cur[p] ^= 1; if (cur[p] == 1) { break; } p--; assert(p >= 0); } continue; } if (ch == 'L') { int p = (int) cur.size() - 1; while (1) { cur[p] ^= 1; if (cur[p] == 0) { break; } p--; assert(p >= 0); } continue; } assert(0); } return cur; } 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; vector<int> x = solve(s), y = solve(t); ll a, b; a = 1; b = 1; for (int i = 0; i < (int) x.size(); i++) { a = a * 2 + x[i]; } for (int i = 0; i < (int) y.size(); i++) { b = b * 2 + y[i]; } 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...