5pts啊啊
查看原帖
5pts啊啊
1056087
LeoyinCoding楼主2023/10/6 17:11

代码送上

个人感觉在第三大块出了问题(做命令,详情看注释) 呃呃呃呃90行眼睛花了

#12ac

#15 #19 re 剩下的wa

#include<bits/stdc++.h>
using namespace std;

struct p{
	bool dir;
	string s;
	int node = 0;
	bool ifis;
};

struct c{
	bool dir;
	int n;
};

int n;
int m;

int main(){
	
	
	//in
	cin >> n >> m;
	p people[n+1];
	c command[m];
	for(int i = 0; i < n;i++){
		cin >> people[i].dir >> people[i].s;
	}
	for(int i = 0; i < m;i++){
		cin >> command[i].dir >> command[i].n;
	}
	
	
	
	//ini last&first
	people[n+1].node = -1;
	people[0].ifis = true;
	
	
	
	//do the commands
	int pos = 0;
	for(int i = 0; i < m;i++){
		int nowpos = 0;
		if(command[pos].dir == 0){
			if(people[pos].dir == 0){
				nowpos = pos - command[pos].n;
				if(nowpos < 0) nowpos += n-1;
				people[pos].ifis = false;
				pos = nowpos;
				people[pos].ifis = true;
			}
			else{
				nowpos = pos + command[pos].n;
				if(nowpos > n-1) nowpos -= n+1;
				people[pos].ifis = false;
				pos = nowpos;
				people[pos].ifis = true;
			}
		}
		else{
			if(people[pos].dir == 0){
				nowpos = pos + command[pos].n;
				if(nowpos > n-1) nowpos -= n+1;
				people[pos].ifis = false;
				pos = nowpos;
				people[pos].ifis = true;
			}
			else{
				nowpos = pos - command[pos].n;
				if(nowpos < 0) nowpos += n-1;
				people[pos].ifis = false;
				pos = nowpos;
				people[pos].ifis = true;
			}
		}
	} 
	
	
	//out
	for(int i = 0; i < n;i++){
		if(people[i].ifis == true){
			cout << people[i].s;
			return 0;
		}
	}
	
	int NoAnswer = -1;
	return NoAnswer;
} 
2023/10/6 17:11
加载中...