P1563 玩具谜题
处理好异或运算的关系即可
#include <bits/stdc++.h>
using namespace std;
map<string,int>cnt;
int main() {
int n,m;
vector<string>order;
scanf("%d%d",&n,&m);
for (int i = 0; i < n; ++i) {
int tmp;string identity;
cin>>tmp>>identity;
cnt[identity]=tmp;
order.push_back(identity);
}
int position=0;
for (int i = 0; i < m; ++i) {
int LeftOrRight,step;
scanf("%d%d",&LeftOrRight,&step);
if (LeftOrRight^cnt[order[position]]){
position+=step;
position%=n;
} else{
position-=step;
position+=n;
position%=n;
}
}
cout<<order[position]<<endl;
return 0;
}