// UVa 11995 - I Can Guess the Data Structure!
#include <stdio.h>
#include <stack>
#include <queue>
using namespace std;
queue<int> q;
priority_queue<int> pq;
stack<int> s;
int main() {
int n;
while (scanf("%d", &n) > 0) {
q = queue<int>();
pq = priority_queue<int>();
s = stack<int>();
bool canBeQ = true, canBeP = true, canBeS = true;
int count = 0;
for (; n; n--) {
int operation, parameter;
scanf("%d %d", &operation, ¶meter);
if (operation == 1) {
q.push(parameter);
pq.push(parameter);
s.push(parameter);
count++;
} else {
if (count > 0) {
int out = q.front();
q.pop();
canBeQ = canBeQ && (out == parameter);
out = pq.top();
pq.pop();
canBeP = canBeP && (out == parameter);
out = s.top();
s.pop();
canBeS = canBeS && (out == parameter);
count--;
} else {
canBeQ = false;
canBeP = false;
canBeS = false;
}
}
}
if (canBeQ && !canBeP && !canBeS)
printf("queue\n");
else if (!canBeQ && canBeP && !canBeS)
printf("priority queue\n");
else if (!canBeQ && !canBeP && canBeS)
printf("stack\n");
else if (!canBeQ && !canBeP && !canBeS)
printf("impossible\n");
else
printf("not sure\n");
}
return 0;
}
Friday, April 24, 2015
UVa 11995 - I Can Guess the Data Structure!
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment