代码送上
个人感觉在第三大块出了问题(做命令,详情看注释) 呃呃呃呃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;
}