Submission #54078

#TimeUsernameProblemLanguageResultExecution timeMemory
54078okaybody10Board (CEOI13_board)C++11
40 / 100
11 ms2212 KiB
#include <bits/stdc++.h> typedef long long ll; using namespace std; const int MAX = 0x7fffffff; ll node1,node2; int stair1,stair2; int main() { node1=node2=1; string a,b; cin>>a>>b; int v=a.size(); for(int i=0;i<v;i++) { if(a[i]=='1') stair1++,node1=2*(node1-1)+1; else if(a[i]=='2') stair1++,node1=2*(node1-1)+2; else if(a[i]=='U') stair1--,node1=(node1+1)/2; else if(a[i]=='L') node1--; else node1++; } int v1=b.size(); for(int i=0;i<v1;i++) { if(b[i]=='1') stair2++,node2=2*(node2-1)+1; else if(b[i]=='2') stair2++,node2=2*(node2-1)+2; else if(b[i]=='U') stair2--,node2=(node2+1)/2; else if(b[i]=='L') node2--; else node2++; } int cnt=0; //printf("%d %lld %d %lld\n",stair1,node1,stair2,node2); if(stair2<stair1) swap(stair1,stair2),swap(node1,node2); ll base=stair2-stair1; while(stair2!=stair1) { stair2--,node2=(node2+1)/2; } ll ans=MAX; while(stair1) { ans=min(ans,abs(node2-node1)+2*cnt); node1=(node1+1)/2,node2=(node2+1)/2; cnt++; stair1--; } return !printf("%lld",base+ans); }
#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...