#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e6+100;
int n,m;
struct node
{
int turn;
string name;
}p[MAXN];
int a[MAXN],s[MAXN];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>p[i].turn>>p[i].name;
for(int i=1;i<=m;i++) cin>>a[i]>>s[i];
int cnt=1;
for(int i=1;i<=m;i++)
{
if(a[i]==0&&p[cnt].turn==0) cnt=(n+cnt-s[i])%n;
else if(a[i]==0&&p[cnt].turn==1) cnt=(cnt+s[i])%n;
else if(a[i]==1&&p[cnt].turn==0) cnt=(cnt+s[i])%n;
else if(a[i]==1&&p[cnt].turn==1) cnt=(n+cnt-s[i])%n;
}
cout<<p[cnt].name<<endl;
return 0;
}
但为什么就改了一小下就过了
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e6+100;
int n,m;
struct node
{
int turn;
string name;
}p[MAXN];
int a[MAXN],s[MAXN];
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++) cin>>p[i].turn>>p[i].name;
for(int i=0;i<m;i++) cin>>a[i]>>s[i];
int cnt=0;
for(int i=0;i<m;i++)
{
if(a[i]==0&&p[cnt].turn==0) cnt=(n+cnt-s[i])%n;
else if(a[i]==0&&p[cnt].turn==1) cnt=(cnt+s[i])%n;
else if(a[i]==1&&p[cnt].turn==0) cnt=(cnt+s[i])%n;
else if(a[i]==1&&p[cnt].turn==1) cnt=(n+cnt-s[i])%n;
}
cout<<p[cnt].name<<endl;
return 0;
}