#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <math.h>
#include <bitset>
#include <algorithm>
#include <climits>
using namespace std;
#define ll long long
#define int long long
const int N=3e5+10;
ll n,q;
int lowbit(int x){return x&(-x);}
int right(int x){
return x+(lowbit(x)>>1);
}
int left(int x){
return x-(lowbit(x)>>1);
}
int up(int x){
int lb=lowbit(x),lbb=lowbit(x-lb);
if(lb!=lbb/2) return x+lb;
else return x-lb;
}
int32_t main(){
// cout<<up(8)<<endl;
scanf("%lld%lld",&n,&q);
int RT=(n+1)>>1;
while(q--){
int rt;scanf("%lld",&rt);string s;cin>>s;
for(int i=0;i<s.size();i++){
if(s[i]=='R'){
rt=right(rt);
}else if(s[i]=='L'){
rt=left(rt);
}else{
if(rt==RT) continue;
else rt=up(rt);
}
}
cout<<rt<<endl;
}
}
Educational Codeforces Round 18 D. Paths in a Complete Binary Tree
最新推荐文章于 2024-08-16 16:33:03 发布