模拟水题。
(当前位置+跨越人数)%总人数=下一个位置
PS:因为取模,所以要把第一个人的位置设为0(而不是1)
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
const int maxn=100000+5;
struct peo
{
int dir;
char zy[20];
}PP[maxn];
int n,m;
int main()
{
int a,b;
char c[20];
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
{
scanf("%d",&PP[i].dir);
scanf("%s",PP[i].zy);
}
int now=0;
for(int i=1;i<=m;i++)
{
scanf("%d%d",&a,&b);
{
if(PP[now].dir==1&&a==0)
now=(now+b+n)%n;
else if(PP[now].dir==0&&a==1)
now=(now+b+n)%n;
else if(PP[now].dir==1&&a==1)
now=(now-b+n)%n;
else now=(now-b+n)%n;
}
}
printf("%s\n",PP[now].zy);
return 0;
}