https://www.luogu.org/problemnew/show/P1563
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
int n;
int m;
typedef struct
{
char name[15];
int dir;
} node;
vector<node> vn;
int main() {
cin>>n>>m;
vn.resize(n);
for(int i=0; i<n; i++)
{
cin>>vn[i].dir>>vn[i].name;
}
int ib=0,idan,idir;
for(int i=0; i<m; i++)
{
cin>>idir>>idan;
if(vn[ib].dir==1&&idir==0||
vn[ib].dir==0&&idir==1)
{
ib=(ib+idan)%n;
}
else
{
ib=(ib+n-idan%n)%n;
}
}
cout<<vn[ib].name<<endl;
return 0;
}
输入输出格式
输入格式:
输入的第一行包含两个正整数 n,m,表示玩具小人的个数和指令的条数。
接下来 n 行,每行包含一个整数和一个字符串,以逆时针为顺序给出每个玩具小人的朝向和职业。其中 0 表示朝向圈内,1表示朝向圈外。 保证不会出现其他的数。字符串长度不超过 10 且仅由小写字母构成,字符串不为空,并且字符串两两不同。整数和字符串之间用一个空格隔开。
接下来 m 行,其中第 i 行包含两个整数 a_i,si,表示第 i 条指令。若 a_i=0,表示向左数si 个人;若 a_i=1,表示向右数 s_i 个人。 保证 a_i不会出现其他的数,
输出格式:
输出一个字符串,表示从第一个读入的小人开始,依次数完 m 条指令后到达的小人的职业。
输入输出样例
输入样例#1: 复制
7 3 0 singer 0 reader 0 mengbier 1 thinker 1 archer 0 writer 1 mogician 0 3 1 1 0 2
输出样例#1: 复制
writer