本题思路:
本题的麻烦点在余,如可分辩内外左右间的关系,因为内外情况下,左右是相反的,弄清楚这点本题就很简单了
#include<iostream>
using namespace std;
struct ren {
int zy;
char mz[11];
}s[100010];
int main() {
int n,m;
cin >> n >> m;
int i;
for (i = 0; i < n; i++) {
cin >> s[i].zy >> s[i].mz;
}
int t = 0,j = 0;//t (0为圈内,1为圈外) j为现在在是那个人
if (s[0].zy == 1)t = 1;
int a, b;
for (i = 1; i <= m; i++) {//指令的条数
cin >> a >> b;//a (0为左,1为右)
if (t == 0 && a == 0) {//要求逆时针为正
j = (j +n-b) % n;//j 现在的位置,位置不能是负数
t = s[j].zy;//刷新方向,每个人的方向不一定相同
}
else if (t == 0 && a == 1) {//
j = (j +b) % n;
t = s[j].zy;
}
else if (t == 1 && a == 0) {
j = (j +b) % n;
t = s[j].zy;
}
else if (t == 1 && a == 1) {
j = (j +n- b) % n;//现在的位置
t = s[j].zy;
}
}
cout << s[j].mz << endl;
}