#include <iostream>
#include <queue>
using namespace std;
queue<string>V,N;
int main()
{
int m;
string io,nv,name;
cin>>m;
for(int i=0;i<m;i++){
cin>>io;
if(io=="IN"){
cin>>name>>nv;
if(nv=="N"){
N.push(name);
}
else{
V.push(name);
}
}
else{
cin>>nv;
if(nv=="N"){
N.pop();
}
else{
V.pop();
}
}
}
while(!V.empty()){
cout<<V.front()<<endl;
V.pop();
}
while(!N.empty()){
cout<<N.front()<<endl;
N.pop();
}
return 0;
}
问题
心灵之园是一家知名的精神疗养院,为了提供更优质的服务,他们专门设立了一个 VIPVIP 诊室和一个普通诊室。VIPVIP 诊室主要接待特殊需求的高级会员,而普通诊室则服务所有的普通病患。
诊室的工作人员小桥负责管理诊室的排队情况。每个病人在进行诊疗前,都需要先进行排队,而小桥的工作就是根据下列四种情况进行操作:
IN name V
:表示一名叫name
的病患来到了 VIPVIP 诊室排队。OUT V
:表示 VIP 诊室队头的病患已经完成了诊疗,离开了排队。IN name N
:表示一名叫name
的病患来到了普通诊室排队。OUT N
:表示普通诊室队头的病患已经完成了诊疗,离开了排队。
现在给出一系列的操作,请你帮助小桥计算出在所有操作结束后,VIPVIP 诊室队列和普通诊室队列中的病患名单。
输入格式
输入的第一行是一个整数 M,表示一共有 M 次操作。
接下来的 M 行每行描述一个操作,格式如下:
IN name V
OUT V
IN name N
OUT N
输出格式
输出所有操作结束后 VIPVIP 诊室队列和普通诊室队列中的病患姓名(从头到尾)。先输出 VIPVIP 诊室队列,再输出普通诊室队列,每行一个病患姓名。
样例输入
5
IN kodgb N
IN utfuv V
OUT V
IN qlpof N
IN kvofa N
样例输出
kodgb
qlpof
kvofa