UVA 11995I Can Guess the Data Structure!【模拟】

来源:互联网 发布:暗影格斗2mac破解 编辑:程序博客网 时间:2024/06/10 07:00

题目链接:
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3146

题意:
给定一堆的操作,问这个数据结构是什么

代码:

#include <stdio.h>#include <iostream>#include <algorithm>#include <string.h>#include <queue>#include <stack>using namespace std;int n;int a, b;queue<int> que;stack<int> st;priority_queue<int>que1;int main(){    while (~scanf("%d", &n))    {        while (!que.empty()) que.pop();        while (!st.empty()) st.pop();        while (!que1.empty()) que1.pop();        int ok1 = 1, ok2 = 1, ok3 = 1;        int cnt = 3;        for (int i = 1; i <= n; i++)        {            scanf("%d%d", &a, &b);            if (a == 1)            {                que.push(b);                st.push(b);                que1.push(b);            }            else            {                if ((que.empty() || b != que.front()) && ok1) {                    ok1 = 0; cnt--;                }                if ((st.empty() || b != st.top()) && ok2) {                    ok2 = 0; cnt--;                }                if ((que1.empty() || b != que1.top()) && ok3) {                    ok3 = 0; cnt--;                }                if (!que.empty()) que.pop();                if (!st.empty()) st.pop();                if (!que1.empty()) que1.pop();            }        }        if (cnt == 0) printf("impossible\n");        else if (cnt > 1) printf("not sure\n");        else        {            if (ok1) printf("queue\n");            else if(ok2) printf("stack\n");            else printf("priority queue\n");        }    }    return 0;}
0 0
原创粉丝点击