思路:需要模拟栈,队列,优先队列,看看输入满足以上的哪一种情况
#include <cstdio>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <stdlib.h>
#include <stack>
#include <queue>
#include <iterator>
#include <set>
#include <ctype.h>
using namespace std;
int main()
{
int n;
while(~scanf("%d", &n))
{
int x, y;
bool iss = true, isq = true, ispq = true;
stack <int> s;
queue <int> q;
priority_queue <int> pq;
for(int i = 0; i < n; i++)
{
scanf("%d%d", &x, &y);
if(x == 1)
{
s.push(y);
q.push(y);
pq.push(y);
}
else
{
if(iss)
{
if(!s.empty() && y == s.top())
s.pop();
else
iss = false;
}
if(isq)
{
if(!q.empty() && y == q.front())
q.pop();
else
isq = false;
}
if(ispq)
{
if(!pq.empty() && y == pq.top())
pq.pop();
else
ispq = false;
}
}
}
if(iss && !isq && !ispq)
puts("stack");
else
if(!iss && isq && !ispq)
puts("queue");
else
if(!iss && !isq && ispq)
puts("priority queue");
else
if(!iss && !isq && !ispq)
puts("impossible");
else
puts("not sure");
}
return 0;
}