UVa 11995 I Can Guess the Data Structure!

来源:互联网 发布:淘宝刷心悦会封号吗 编辑:程序博客网 时间:2024/06/03 23:14
#include <iostream>#include <cstdio>#include <cstring>#include <stack>#include <queue>#include <map>using namespace std;const int maxn = 1010;int a[maxn], b[maxn];int n;int check1(){    queue<int>q;    for(int i=0;i<n;++i){            if(a[i]==1){               q.push(b[i]);            }            else {                if(q.empty())return 0;                int x = q.front();                if(x!=b[i])return 0;                q.pop();            }    }    return 1;}int check2(){    priority_queue<int>que;    for(int i=0;i<n;++i){            if(a[i]==1){               que.push(b[i]);            }            else {                if(que.empty())return 0;                int x = que.top();                if(x!=b[i]){return 0;}                que.pop();            }    }    return 1;}int check3(){    stack<int>s;    for(int i=0;i<n;++i){            if(a[i]==1){               s.push(b[i]);            }            else {                if(s.empty())return 0;                int x =  s.top();                if(x!=b[i]){return 0;}                s.pop();            }    }    return 1;}int main(){   // freopen("in.txt","r",stdin);   // int n;                             //被这个N坑惨了    while(scanf("%d",&n)==1){        for(int i=0;i<n;++i)scanf("%d%d",&a[i],&b[i]);        int f1 = check1();        int f2 = check2();        int f3 = check3();        if(!f1&&!f2&&!f3)printf("impossible\n");        else if(f1&&!f2&&!f3)printf("queue\n");        else if(!f1&&f2&&!f3)printf("priority queue\n");        else if(!f1&&!f2&&f3)printf("stack\n");        else printf("not sure\n");    }    return 0;}

0 0