This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |