萌新求助!!!
查看原帖
萌新求助!!!
920270
Wei_scky楼主2023/8/22 10:58

虽然样例都过不了...但是搞不懂哪里错了┭┮﹏┭┮

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10; 
int n,m;
struct re{
    int nw;//朝向内外0表示朝向圈内,1表示朝向圈外 
    string s;//玩具名称 
}k[N];
int aa;//0是向左数1是向右数 
int ss;//向左或向右数几个人 
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>k[i].nw>>k[i].s;
	int ff=1;
	while(m--){
		cin>>aa>>ss;
		if(k[ff].nw==0){//朝内的情况 
			for(int i=1;i<=ss;i++){
				if(aa==0){//朝内向左(向上) 
				    if(ff==1) ff=n;
					else ff--;//!!!!!  
				}
				else{//朝内向右(向下) 
					if(ff==n) ff=1;
					else ff++;//!!!!!
				}	
			} 
		}
		else{//朝外的情况 
			for(int i=1;i<=ss;i++){
				if(aa=0){//朝外向左(向下) 
					if(ff==n) ff=1;
					else ff++;//!!!!!
				}
				else{//朝外向右(向上) 
					if(ff==1) ff=n;
					else ff--;//!!!!!
				}
			} 
		}
	}
	cout<<k[ff].s<<endl;
	return 0;
}
/*
输入: 
7 3
0 singer
0 reader(singer右1)
0 mengbier(singer右2) 
1 thinker(singer右3)
1 archer(singer左3) 
0 writer(singer左2) 
1 mogician(singer左1) 
0 3
1 1
0 2
输出:
writer 
样例详解:
 从singer(朝内)开始 向左数3个人(archer) 
 从archer(朝外)开始 向右数1个人(thinker)
 从thinker(朝内)开始 向左数2个人(writer) 
*/ 
/*
输入:
10 10
1 C
0 r
0 P
1 d
1 e
1 m
1 t
1 y
1 u
0 V
1 7
1 1
1 4
0 5
0 3
0 1
1 6
1 2
0 8
0 4 
输出:
y
样例详解:
 从C(朝外)开始 向右数7个人(d)
 从d(朝外)开始 向右数1个人(P) 
 从P(朝内)开始 向右数4个人(t)
 从t(朝外)开始 向左数5个人(r)
 从r(超内)开始 向左数3个人(u)
 从u(朝外)开始 向左数1个人(V)
 从V(朝内)开始 向右数6个人(m)
 从m(朝外)开始 向右数2个人(d)
 从d(朝外)开始 向左数8个人(r)
 从r(朝内)开始 向左数4个人(y) 
*/ 
/*
总结: 
玩具朝内(朝向右边(我的右手))
向左数:向上数 
向右数:向下数 
玩具朝外(朝向左边(我的左手)) 
向左数:向下数 
向右数:向上数 
*/ 
2023/8/22 10:58
加载中...