纯模拟,9、10、11、13TLE了
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e6 + 5;
int n,m;
int dir[MAXN];
string job[MAXN];
int count1(int r,int x){
int ans = r;
for(int i = 1;i <= x;i++){
ans = (ans + n) % n + 1;
}
return ans;
}
int count2(int r,int x){
int ans = r;
for(int i = 1;i <= x;i++){
ans = (ans + n - 2) % n + 1;
}
return ans;
}
int main(){
scanf("%d%d",&n,&m);
for(int i = 1;i <= n;i++){
scanf("%d",&dir[i]);
cin >> job[i];
}
int ANS = 1;
for(int i = 1;i <= m;i++){
int a,s;
scanf("%d%d",&a,&s);
if(a == dir[ANS])ANS = count2(ANS,s);
else ANS = count1(ANS,s);
}
cout << job[ANS];
return 0;
}