// 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