//思路:模拟 #include<iostream> #include<cstdio> #include<fstream> #include<algorithm> #include<string> #include<sstream> #include<cstring> using namespace std; int k[100005]; char s[100005][20]; int main() { int n=0,m=0,now=1; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d%s",&k[i],s[i]); for(int i=1;i<=m;i++) { int x=0,y=0; scanf("%d%d",&x,&y); if(x==0)//如果是向左数 if(k[now]==0)//如果这个人朝内 if(now-y%n>=1) now-=y%n;//就减 else now=n-(y%n-now); else now=(now+y)%n;//否则就加 else//否则 if(k[now]==1)//如果这个人朝外 if(now-y%n>=1) now-=y%n;//就减 else now=n-(y%n-now); else now=(now+y)%n;//否则就加 if(now==0) now=n;//当now等于n时刚好会被n模成0,所以要判断一下 } printf("%s",s[now]); return 0; }
原文地址:https://www.cnblogs.com/wozaixuexi/p/8456145.html
时间: 2024-11-10 12:58:19