import java.util.Scanner;
public class P1563玩具谜题 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();//人数
int x = scanner.nextInt(); //指令条数
int[] pp = new int[n]; //人的朝向;
String [] name = new String[n]; //人的姓名
for(int i=0;i<n;i++) {
pp[i] = scanner.nextInt(); //输入0或1; 0表示里面,1表示外面
name[i] = scanner.next(); //姓名
}
int index = 0; //定义下标
for(int i=0;i<x;i++) { //输入指令
//输入0
int a = scanner.nextInt(); //0是左数,1是右数
int b = scanner.nextInt(); //数几个
/*
*
对于面向里面的人来说,a=0,是往后数,a=1是往前数
对于面向外面的人来说,a=0,是往往前数,a=1是往后数
*/
if( a==0 ) {
//左数
//先判断朝向
if(pp[index] == 0) { //面向里面; 对于面向里面的人来说,a=0,是往后数,a=1是往前数
//后退
if(index >= b) {
index -= b;
}else {
index = (n+index-b)%n;
}
}else if(pp[index] == 1) { //面向外面; 对于面向外面的人来说,a=0,是往前数,a=1是往后数
//前进
if(b+index < n) {
index += b;
}else {
index = (index+b)%n;
}
}
}else if(a == 1) { //右数
//先判断朝向
if(pp[index] == 0) { //面向里面; 对于面向里面的人来说,a=0,是往后数,a=1是往前数
//前进
if(x+index < n) {
index += b;
}else {
//因为是圆
index = (index+b)%n;
}
}else if(pp[index] == 1) { //面向外面; 对于面向外面的人来说,a=0,是往前数,a=1是往后数
//后退
if(index >= b) {
index -= b;
}else {
//因为是圆
index = (n+index-b)%n;
}
}
}
}
System.out.print(name[index]);
}
}
洛谷P1563玩具谜题 java简单易懂
最新推荐文章于 2024-08-31 10:53:27 发布