这一题要用双向队列deque,用queue已经不可以咯~
题目描述
小科的成人礼上,邀请了n个人来参加。这n个人陆陆续续到来,现场有一张大长椅,每当有一个人来小科就会让他从长椅的左边或右边进去坐下。由于来的人太多,小科已经忙坏了,以至于当科丁博士问他:“现在长椅上坐着的人从左往右依次是谁?”时,他也无法立即回答出来。
现在请你编一个程序来帮他回答这个问题。
输入格式
第一行是一个整数n。1<=n<=20000。
接下来n行,每行有一个数字a和字符串Name,当a=0表示这个人是从左边进入长椅的,当a=1时表示这个人是从右边进入长椅的。Name是长度为1-5的字符串,表示第i个到来的人的名字。
输出格式
共n行,依次表示长椅上从左到右的人的名字。
输入输出样例
输入样例1:
10 0 LZZ 0 HSY 0 TSW 1 LHS 1 WKA 0 LWJ 1 HT 0 ZZB 1 DYL 0 ZJX
输出样例1:
ZJX
ZZB
LWJ
TSW
HSY
LZZ
LHS
WKA
HT
DYL
【耗时限制】1000ms 【内存限制】256MB
//
//Created by Carlgood.
//
//Note:This program is written in version DEV-C++ 5.11.
# include<iostream>
# include<cmath>
# include<string>
# include<cstring>
# include<cstdio>
# include<algorithm>
# include<sstream>
# include<vector>
# include<queue>
# include<deque>
# define This_program_is_written_by_Carlgood_Programming_Studio 9876543210
using namespace std;
deque<string> a;
int main()
{
int n;
cin>>n;
string s;
int b;
for(int i=1;i<=n;i++)
{
cin>>b>>s;
if(b==0)
{
a.push_front(s);
}
else
{
a.push_back(s);
}
}
int len=a.size();
for(int i=0;i<len;i++)
{
cout<<a.front()<<endl;
a.pop_front();
}
return 0;
}