清北暑假模拟day2 国

【题目描述】
在世界的东边,有三瓶雪碧。
——laekov
黎大爷为了虐 zhx,给 zhx 出了这样一道题。黎大爷搞了一个数据结构,但
是他没有告诉 zhx 这到底是什么数据结构,我们只知道这是一个数据结构。为了
zhx 知道这是什么数据结构,黎大爷制造了很多次的输入和输出操作。每次加
入操作,黎大爷会告诉你他向这个数据结构加入了一个数并告诉你这是多少;每
次取出操作,黎大爷会从数据结构之中取出一个数并告诉这是多少。黎大爷希望
zhx 根据这些操作来判断这是什么数据结构,但是 zhx 觉得这题太难了所以跑路
了,于是黎大爷把这道题扔给了你。
【输入格式】
第一行一个整数

【数据范围与规定】
对于100%的数据, 1 ≤ n <= 10^3

/*
水题,注意判断是否为空
*/
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<stack>
#include<queue>

using namespace std;

stack<int> s;

queue<int> q;

priority_queue<int> h;

int n;

int main()
{
    freopen("man.in","r",stdin);
    freopen("man.out","w",stdout);

    scanf("%d",&n);
    bool able1=true,able2=true,able3=true;
    int z=0;
    for (;n--;)
    {
        int o,v;
        scanf("%d%d",&o,&v);
        if (o&1)
        {
            s.push(v);
            q.push(v);
            h.push(v);
            z++;
        }
        else
        {
            if (!z)
            {
                able1=able2=able3=false;
                break;
            }
            z--;
            if (s.top()!=v) able1=false;
            if (q.front()!=v) able2=false;
            if (h.top()!=v) able3=false;
            s.pop();
            q.pop();
            h.pop();
        }
    }
    printf("%s
",able1 ? "YES" : "NO");
    printf("%s
",able2 ? "YES" : "NO");
    printf("%s
",able3 ? "YES" : "NO");

    return 0;
}
原文地址:https://www.cnblogs.com/hyfer/p/5978411.html