Submission #776999

#TimeUsernameProblemLanguageResultExecution timeMemory
776999NK_Board (CEOI13_board)C++17
30 / 100
2 ms1140 KiB
// Success consists of going from failure to failure without loss of enthusiasm #include <bits/stdc++.h> using namespace std; #define nl '\n' #define sz(x) int(x.size()) using str = string; template<class T> using V = vector<T>; struct node { int d, x; }; const int INF = 1e9 + 10; int main() { cin.tie(0)->sync_with_stdio(0); str A, B; cin >> A >> B; V<int> PA, PB; auto get = [&](const str& S) { node x{0, 0}; V<int> P; for(auto& c : S) { if (isdigit(c)) { int v = c - '0' - 1; x.d++, x.x = (2 * x.x) + v; } if (c == 'U') x.d--, x.x /= 2; if (c == 'L') x.x--; if (c == 'R') x.x++; // cout << x.d << " " << x.x << endl; } while(x.d >= 0) { P.push_back(x.x); x.d--, x.x /= 2; } reverse(begin(P), end(P)); // cout << endl; return P; }; PA = get(A), PB = get(B); int ans = INF; for(int i = 0; i < min(sz(PA), sz(PB)); i++) { int upa = sz(PA) - 1 - i, upb = sz(PB) - 1 - i; ans = min(ans, upa + upb + abs(PA[i] - PB[i])); } cout << ans << nl; 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...