#include<iostream> #include<cmath> using namespace std; int n,m,tow[100005],num[200005]; char names[100005][20]; char* f(int now,int nown){//输入当前的玩具序号和进行到第几次查找 if(nown>=m)return names[now];//如果次数够了,返回当前玩具名称 now+=2*((num[nown*2]!=tow[now])-0.5)*num[nown*2+1];//找到下一个玩具的序号,求出需要往哪个方向再*需要走的步数 while(now<0)now+=n;//避免出界 now%=n; //cout<<names[now]<<endl; return f(now,nown+1);//进行下一次查找 } int main(){ int i=0; cin>>n>>m; for(i=0;i<n;i++){ cin>>tow[i]>>names[i]; } for(i=0;i<m;i++){ cin>>num[i*2]>>num[i*2+1];//直接用偶数保存方向,奇数保存次数 } cout<<f(0,0)<<endl; return 0; }
地址:https://www.luogu.com.cn/problem/P1563