Submission #480884

#TimeUsernameProblemLanguageResultExecution timeMemory
480884blueBoard (CEOI13_board)C++17
20 / 100
19 ms11348 KiB
#include <iostream> #include <queue> #include <vector> using namespace std; int main() { int pow2[20]; pow2[0] = 1; for(int e = 1; e < 20; e++) pow2[e] = 2*pow2[e-1]; vector<int> edge[25'000]; for(int i = 2; i <= 10'000; i++) { edge[i/2].push_back(i); edge[i].push_back(i/2); } for(int e = 2; e < 15; e++) { for(int i = pow2[e-1]; i < pow2[e] - 1; i++) { edge[i].push_back(i+1); edge[i+1].push_back(i); } } string a, b; cin >> a; cin >> b; int A = 1; for(char c: a) { if(c == '1') A = 2*A; else if(c == '2') A = 2*A+1; else if(c == 'U') A /= 2; else if(c == 'L') A--; else A++; } int B = 1; for(char c: b) { if(c == '1') B = 2*B; else if(c == '2') B = 2*B+1; else if(c == 'U') B /= 2; else if(c == 'L') B--; else B++; } queue<int> tbv; tbv.push(A); vector<int> dist(1'000'000, 1'000'000); dist[A] = 0; while(!tbv.empty()) { int u = tbv.front(); tbv.pop(); for(int v: edge[u]) { if(dist[u] + 1 >= dist[v]) continue; dist[v] = dist[u] + 1; tbv.push(v); } } cout << dist[B] << '\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...
#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...