#include <bits/stdc++.h> using namespace std; int n; int main() { int a,b; while (scanf("%d",&n)!=EOF) { stack<int>s; queue<int>q; priority_queue<int,vector<int>,less<int> >p; int f[4]; for(int i=0;i<4;i++) f[i]=1; for(int i=1;i<=n;i++) { scanf("%d %d",&a,&b); if(a==1) ///分别进入三种数据结构 { s.push(b); q.push(b); p.push(b); } else { if(!s.empty()) { if(s.top()!=b)///进栈 { f[0]=0; } s.pop(); } else f[0]=0; if(!q.empty())///进队 { if(q.front()!=b) { f[1]=0; } q.pop(); } else f[1]=0; if(!p.empty()) ///进优先队列 { if(p.top()!=b) { f[2]=0; } p.pop(); } else f[2]=0; } } int cnt=0; for(int j=0;j<3;j++) { if(f[j]==1) cnt+=1; } if(cnt==0) cout<<"impossible\n"; else if(cnt>1) cout<<"not sure\n"; else { if(f[0]) cout<<"stack\n"; if(f[1]) cout<<"queue\n"; if(f[2]) cout<<"priority queue\n"; } } }
原文:https://www.cnblogs.com/besonn/p/10360230.html