rt
以下是源代码(改之前)
subtask 45
#include<iostream>
#include<algorithm>
#define ll long long
#define ii int
using namespace std;
const ii MAXN=1e5+11;
ii n,m,a[MAXN],b,ss,c,j;
string s[MAXN],ans;
bool f[MAXN];
int main(){
cin>>n>>m;
for(ii i=0;i<n;++i){
cin>>b>>s[j];
if(b==0)
f[j]=1;
++j;
}
j=0;
for(ii i=0;i<m;++i){
cin>>c>>ss;
if(c==0){
if(!f[j]){//外 左
if(j+ss>=n){
j=j+ss-n;
}
else
j+=ss;
}
else if(f[j]){//内 左
if(j-ss<=0){
j=n-ss+j;
}
else
j-=ss;
}
}
else if(c==1){
if(!f[j]){//外 右
if(j-ss<=0){
j=n-ss+j;
}
else
j-=ss;
}
else if(f[j]){//内 右
if(j+ss>=n){
j=j+ss-n;
}
else
j+=ss;
}
}
}
cout<<s[j];
return 0;
}
改之后AC
#include<iostream>
#include<algorithm>
#define ll long long
#define ii int
using namespace std;
const ii MAXN=1e5+11;
ii n,m,a[MAXN],b,ss[MAXN],c,j;
string s[MAXN],ans;
bool f[MAXN];
int main(){
cin>>n>>m;
for(ii i=0;i<n;++i){
++j;
cin>>b>>s[j];
if(b==0)
f[j]=1;
}
j=0;
for(ii i=0;i<m;++i){
cin>>c>>ss[i];
if(c==0){
if(!f[j]){//外 左
if(j+ss[i]>n){
j=j+ss[i]-n;
}
else
j+=ss[i];
}
else if(f[j]){//内 左
if(j-ss[i]<=0){
j=n-ss[i]+j;
}
else
j-=ss[i];
}
}
else if(c==1){
if(!f[j]){//外 右
if(j-ss[i]<=0){
j=n-ss[i]+j;
}
else
j-=ss[i];
}
else if(f[j]){//内 右
if(j+ss[i]>n){
j=j+ss[i]-n;
}
else
j+=ss[i];
}
}
}
cout<<s[j];
return 0;
}