题目描述
抢座位游戏相信大家都不陌生。在游戏中,n位同学围绕n-1个椅子伴随着音乐慢慢移动。当音乐结束的时候,每个人都要尽自己所能去“抢”坐一个位子。那位没有抢到位子的同学会被淘汰出局。
现在我们要去模拟这样的一个游戏场景:我们会给你一个游戏参赛者名单,按照同学的初始顺序给出。
例如:”Jack Zhang”,”Alice Wang”,”Zack”。以换行符作为分割。
同时也会给你一个长度为n的字符串(仅包含’.’和’h’),’.’表示该位置处没有椅子,’h’表示该位置处有椅子。
例如:hh.h
音乐结束后,假如一位同学在’.’处,那么这位同学将会被淘汰。
现在已知有n位同学,以名字(字符串)的方式给出他们的初始顺序和描述座椅情况的字符串。每过1秒,每位同学都会向前进一个位置。例如,当前时刻有四位同学“a”, “b”, “c”,“d”,1秒之后,他们的位置会变为“d”,“a”,“b”,“c”。在第s秒末音乐结束,请你求出那位被淘汰的同学,并输出他的名字。
输入
输入文件名为 chair.in。
输入第一行为一个正整数n,表示有n位同学
接下来n行,每行一个字符串,表示第i位同学的名字 第n+2行有一个长度为n的字符串,仅包含’h’和’.’,描述座位情况。数据保证仅有1个字符为’.’其它字符均为’h’
第n+3行为一个自然数s,表示在s秒之后音乐将会结束
输出
输出文件名为 chair.out。
输出共 1 行,输出一个字符串,表示被淘汰同学的名字
样例输入
4
Emma Sue
Billy Bob Thornton
Joe
Cassius Clay
hh.h
1
样例输出
Billy Bob Thornton
提示
【输入输出样例2】
样例输入
6
Jack Dempsey
Joe Louis
Rocky Marciano
Cassius Clay
George Foreman
Mike Tyson
h.hhhh
500
样例输出 Mike Tyson
【数据范围】 对于100%的数据 1 ≤ n , len(namei) ≤ 50,0 ≤ s ≤ 600
这是我的代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
long long int n;
scanf("%d",&n);
getchar();
string names[n]={};
string chair;
for(long long int i=0;i<n;i++){
getline(cin,names[i]);
}
getline(cin,chair);
int s;
scanf("%d",&s);
int e = chair.find(".");
e = e+((0-s)%n);
if(e<0){
e+=n;
}
cout<<names[e];
}
谁能告诉我在这个代码在什么时候可能会出现问题?