题意:
给定输入和输出,猜测这是哪一种数据结构
指令1表示放入,2表示取出
#include <iostream>
#include <vector>
#include <map>
#include <list>
#include <set>
#include <deque>
#include <stack>
#include <queue>
#include <algorithm>
#include <cmath>
#include <cctype>
#include <cstdio>
#include <iomanip>
#include <cmath>
#include <cstdio>
#include <iostream>
#include <string>
#include <sstream>
#include <cstring>
#include <queue>
using namespace std;
///宏定义
const int INF = 990000000;
const int maxn = 150 ;
const int MAXN = maxn;
///全局变量 和 函数
int T;
int max(int a, int b)
{
return a > b ? a : b;
}
int n;
int bs, bq, bpq;
stack<int> stk;
queue<int> qu;
priority_queue<int> pqu;
int main()
{
///变量定义
int i, j;
while(scanf("%d", &n) != EOF)
{
while (!stk.empty())
stk.pop();
while (!qu.empty())
qu.pop();
while (!pqu.empty())
pqu.pop();
bs = bq = bpq = 1;
for (i = 0; i < n; i++)
{
int cmd, val;
scanf("%d %d", &cmd, &val);
if (cmd == 1)
{
stk.push(val);
qu.push(val);
pqu.push(val);
}
else
{
if (bs != 0)
{
if (stk.empty())
{
bs = 0;
}
else if (stk.top() != val)
{
bs = 0;
}
else
{
stk.pop();
}
}
if (bq != 0)
{
if (qu.empty())
{
bq = 0;
}
else if (qu.front() != val)
{
bq = 0;
}
else
{
qu.pop();
}
}
if (bpq != 0)
{
if (pqu.empty())
{
bpq = 0;
}
else if (pqu.top() != val)
{
bpq = 0;
}
else
{
pqu.pop();
}
}
}
}
if (bs + bq + bpq == 0)
{
printf("impossible\n");
}
else if (bs + bq + bpq >= 2)
{
printf("not sure\n");
}
else if (bs == 1)
{
printf("stack\n");
}
else if (bq == 1)
{
printf("queue\n");
}
else if (bpq == 1)
{
printf("priority queue\n");
}
}
///结束
return 0;
}