#include<iostream>
#include<cstdio>
using namespace std;
const int Maxn=1e5+10;
struct Information{
bool toward;
string name;
}p[Maxn];
inline void read(int &x){
int f=1;
char ch=getchar();
x=0;
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<3)+(x<<1)+(ch&15);
ch=getchar();
}
x*=f;
}
inline void write(int x){
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
}
int n,m;
int a,s;
int main(){
read(n);read(m);
for(int i=0;i<n;i++) cin>>p[i].toward>>p[i].name;
int pos=0;
for(int i=1;i<=m;i++){
read(a);read(s);
if(p[pos].toward==0&&a==0) pos=(pos+n-s)%n;
else if(p[pos].toward==0&&a==1) pos=(pos+s)%n;
else if(p[pos].toward==1&&a==0) pos=(pos+s)%n;
else if(p[pos].toward==1&&a==1) pos=(pos+n-s)%n;
}
cout<<p[pos].name;
return 0;
}
#include<iostream>
#include<cstdio>
using namespace std;
const int Maxn=1e5+10;
struct Information{
bool toward;
string name;
}p[Maxn];
inline void read(int &x){
int f=1;
char ch=getchar();
x=0;
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<3)+(x<<1)+(ch&15);
ch=getchar();
}
x*=f;
}
inline void write(int x){
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
}
int n,m;
int a,s;
int main(){
read(n);read(m);
for(int i=1;i<=n;i++) cin>>p[i].toward>>p[i].name;
int pos=1;
for(int i=1;i<=m;i++){
read(a);read(s);
if(p[pos].toward==0&&a==0) pos=(pos+n-s)%n;
else if(p[pos].toward==0&&a==1) pos=(pos+s)%n;
else if(p[pos].toward==1&&a==0) pos=(pos+s)%n;
else if(p[pos].toward==1&&a==1) pos=(pos+n-s)%n;
}
cout<<p[pos].name;
return 0;
}
主要差异如下 :
其中 AC
代码中为 :
for(int i=0;i<n;i++) cin>>p[i].toward>>p[i].name;
int pos=0;
而 90pts 代码中为 :
for(int i=1;i<=n;i++) cin>>p[i].toward>>p[i].name;
int pos=1;
这是什么原因
谢谢