Hdu-1702
题目描述
ACboy被绑架了!!
他非常想念他的母亲,现在非常害怕。你无法想象他被关进的房间有多暗,:(太可怜了。
作为一个聪明的ACMer,你想把ACboy从怪物的迷宫里带出来。但当你到达迷宫之门时,怪物说:“我听说你很聪明,但如果不能解决我的问题,你就会和ACboy一起死。
怪物的问题显示在墙上:
每个问题的第一行是一个整数 N(命令数),以及一个单词“FIFO”或“FILO”。(你很高兴,因为你知道“FIFO”代表“先进先出”,而“FILO”的意思是“先进后出”)。
以及以下N行,每行分别为“IN M”或“OUT”,(M代表整数)。
而问题的答案是一扇门的通行证,所以如果你想拯救ACboy,请仔细回答问题!
输入
输入包含多个测试用例。
第一行有一个整数,表示测试用例的数量。
每个子问题的输入如上所述。
输出
对于每个命令“OUT”,您应该输出一个整数,具体取决于单词是“FIFO”或“FILO”,或者如果没有任何整数,则输出单词“None”。
示例输入
4
4 FIFO IN 1 IN 2 OUT OUT
4 FILO IN 1 IN 2 OUT OUT
5 FIFO IN 1 IN 2 OUT OUT OUT
5 FILO IN 1 IN 2 OUT IN 3 OUT
示例输出
1
2
2
1
1
2
None
2
3
代码
#include<iostream>
#include<stack>
#include<queue>
using namespace std;
int main()
{
int n;
cin>>n;//n个命令
while(n--)
{
int m;
string str;
cin>>m>>str;
if(str=="FIFO")//先进先出用队列queue
{
string str1;
queue<int> Q;
while(m--)
{
cin>>str1;
if(str1=="IN")
{
int temp;
cin>>temp;
Q.push(temp);
}
else
{
if(Q.empty())
{
cout<<"None"<<endl;
}
else
{
cout<<Q.front()<<endl;
Q.pop();
}
}
}
}
else//先进后出用栈stack
{
string str1;
stack<int> S;
while(m--)
{
cin>>str1;
if(str1=="IN")
{
int temp;
cin>>temp;
S.push(temp);
}
else
{
if(S.empty())
{
cout<<"None"<<endl;
}
else
{
cout<<S.top()<<endl;
S.pop();
}
}
}
}
}
return 0;
}