用stl中的3种数据结构依次去试,注意取之前要判断容器内是否是空的。
代码:
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
#include <queue>
#include <stack>
queue <int> Q;
stack <int> S;
priority_queue<int> P;
void init(){
while(!Q.empty()) Q.pop();
while(!S.empty()) S.pop();
while(!P.empty()) P.pop();
}
int main(){
int N;
while(~scanf("%d",&N)){
init();
int a=1,b=1,c=1;
for(int i=1;i<=N;i++){
int C,n;
scanf("%d%d",&C,&n);
if(C==1){
Q.push(n);
S.push(n);
P.push(n);
}
else {
if(!a||Q.empty()||Q.front()!=n) a=0;
else Q.pop();
if(!b||S.empty()||S.top()!=n) b=0;
else S.pop();
if(!c||P.empty()||P.top()!=n) c=0;
else P.pop();
}
}
int res=a+b+c;
if(res==0) printf("impossible\n");
else if(res>1) printf("not sure\n");
else{
if(a) printf("queue\n");
else if(b) printf("stack\n");
else printf("priority queue\n");
}
}
return 0;
}