#include<iostream>
#include<stack>
#include<queue>
using namespace std;
int main(){
int n;
int op,value;
while(scanf("%d",&n)!=EOF){
priority_queue <int> p_que;
queue <int> que;
stack <int> sta;
int flag_s=1,flag_q=1,flag_p=1;
for(int i=0;i<n;i++){
scanf("%d%d",&op,&value);
if(op==1){
sta.push(value);
que.push(value);
p_que.push(value);
}
else{
if(sta.empty()||que.empty()||p_que.empty()){
flag_s=0;
flag_p=0;
flag_q=0;
//break;//这里不用用break,因为数据还没输完
}
if(flag_s==1){
int temp=sta.top();
sta.pop();
if(temp!=value) flag_s=0;
}
if(flag_q==1){
int temp=que.front();
que.pop();
if(temp!=value) flag_q=0;
}
if(flag_p==1){
int temp=p_que.top();
p_que.pop();
if(temp!=value)flag_p=0;
}
//如果直接把..pop()写在这里那么可能出现empty的情况还pop(),会造成runtime error的错误,除非加上if(!..empty())
}
}
int cnt = 0;
if(flag_s) cnt++;
if(flag_q) cnt++;
if(flag_p) cnt++;
if(cnt == 0) cout<<"impossible"<<endl;
else if(cnt == 1)
{
if(flag_q) cout<<"queue"<<endl;
else if(flag_p) cout<<"priority queue"<<endl;
else cout<<"stack"<<endl;
}
else cout<<"not sure"<<endl;
}
return 0;
}
UVa-11995 I Can Guess the Data Structure!(STL的使用)
最新推荐文章于 2019-12-08 22:31:42 发布