Submission #777148

#TimeUsernameProblemLanguageResultExecution timeMemory
777148NK_Board (CEOI13_board)C++17
40 / 100
973 ms728 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; using ll = long long; template<class T> using V = vector<T>; const int INF = int(1e9) + 10; const int MX = 1e7; int main() { cin.tie(0)->sync_with_stdio(0); str A, B; cin >> A >> B; auto add = [&](str& S, bool pos) { char c = (pos ? '0' : '1'); for(int i = sz(S)-1; i >= 0; i--) { if (S[i] == c) { S[i] = '0' + '1' - c; break; } S[i] = c; } return S; }; auto get = [&](const str& S) { str T; for(auto& c : S) { if (isdigit(c)) T.push_back(c-1); if (c == 'U') T.pop_back(); if (c == 'L') add(T, 0); if (c == 'R') add(T, 1); } return T; }; A = get(A), B = get(B); int ans = INF; // cout << A << " " << B << endl; int xa = 0, xb = 0; bool aft = 0; for(int i = 0; i < min(sz(A), sz(B)); i++) { if (max(xa, xb) > MX) break; if (A[i] != B[i]) aft = 1; if (aft) { xa = (2 * xa) + (A[i] - '0'); xb = (2 * xb) + (B[i] - '0'); } int upa = sz(A) - i - 1, upb = sz(B) - i - 1; ans = min(ans, upa + upb + abs(xa - xb)); } 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...