程式碼
#include <iostream>
#include <stack>
#include <queue>
using namespace std;
int main()
{
int n, x, command;
while (cin >> n)
{
stack<int> st;
queue<int> q;
priority_queue<int> pq;
bool isStack = true, isQueue = true, isPQ = true;
while (n--)
{
cin >> command >> x;
if (!isStack && !isQueue && !isPQ) continue;
if (command == 1)
{
st.push(x); q.push(x); pq.push(x);
}
else
{
if (st.empty()||st.top() != x) isStack = false;
if (q.empty()||q.front() != x) isQueue = false;
if (pq.empty()||pq.top() != x) isPQ = false;
st.pop(); q.pop(); pq.pop();
}
}
if (!isStack && !isQueue && !isPQ) cout << "impossible" << endl;
else if (isStack && !isQueue && !isPQ) cout << "stack" << endl;
else if (!isStack && isQueue && !isPQ) cout << "queue" << endl;
else if (!isStack && !isQueue && isPQ) cout << "priority queue" << endl;
else cout << "not sure" << endl;
}
return 0;
}
沒有留言:
張貼留言