MSE07B - Double Queue

Tác giả: ll931110

Ngôn ngữ: C++

#include <iostream>
#include <set>
#include <iterator>
#include <utility>
using namespace std;

set< pair<int,int> > s;

int main()
{
//    freopen("mn.in","r",stdin);
//    freopen("mn.ou","w",stdout);
    
    int q;
    pair<int,int> u;
    int k1,k2;
    
    do
    {
//        cout << s.size() << endl;
        scanf("%d", &q);
        if (q == 0) break;
        if (q == 1)
        {
            scanf("%d%d", &k2, &k1);
            u = make_pair(k1,k2);
            s.insert(u);
        }
        else
        {
            if (s.empty()) printf("%d\n", 0);
            else
            {
                if (q == 2) u = *--s.end(); else u = *s.begin();                
                printf("%d\n", u.second);
                s.erase(u);
            };
        };
    }
    while (q != 0);
};

Download