bitmasks trees *1900

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>

using namespace std;

#define int long long
//#define endl '\n'

int n;

pair<int,char> getlevel(int u){
    int lvl = 1;
    int v = n/2;
    char last;
    while(v != u){
        if (v > u) v -= n/(1ll<<(++lvl)), last = 'L';
        else v += n/(1ll<<(++lvl)), last = 'R';
    }
    return {lvl,last};
}

signed main() {
    cin.tie(NULL); cout.tie(NULL); ios::sync_with_stdio(0);
    int q;cin>>n>>q;
    ++n;
    int mx = log2(n);
    while(q--){
        int u;cin>>u;
        string s;cin>>s;
        auto [lvl,pos] = getlevel(u);
        for(auto &x:s){
            if (x == 'U'){
                if (lvl > 1)
                    u += (n/(1ll<<(lvl))) * (pos == 'L' ? 1 : -1);
            }
            if (x == 'L'){
                if (lvl < mx)
                    u -= (n/(1ll<<(lvl+1)));
            }
            if (x == 'R'){
                if (lvl < mx)
                    u += (n/(1ll<<(lvl+1)));
            }
            lvl = getlevel(u).first;
            pos = getlevel(u).second;
        }
        cout<<u<<endl;
    }
    return 0;
}


Comments

Submit
0 Comments
More Questions

1025D - Recovering BST
439A - Devu the Singer and Churu the Joker
1323A - Even Subset Sum Problem
1095A - Repeating Cipher
630F - Selection of Personnel
630K - Indivisibility
20B - Equation
600B - Queries about less or equal elements
1015A - Points in Segments
1593B - Make it Divisible by 25
680C - Bear and Prime 100
1300A - Non-zero
1475E - Advertising Agency
1345B - Card Constructions
1077B - Disturbed People
653A - Bear and Three Balls
794A - Bank Robbery
157A - Game Outcome
3B - Lorry
1392A - Omkar and Password
489A - SwapSort
932A - Palindromic Supersequence
433A - Kitahara Haruki's Gift
672A - Summer Camp
1277A - Happy Birthday Polycarp
577A - Multiplication Table
817C - Really Big Numbers
1355A - Sequence with Digits
977B - Two-gram
993A - Two Squares