Cod sursa(job #2137125)

Utilizator sulzandreiandrei sulzandrei Data 20 februarie 2018 17:02:26
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.29 kb
#include <iostream>

#include <fstream>
#include <set>
using namespace std;
ifstream in("heapuri.in");
ofstream out("heapuri.out");


struct A
{
    int alcat,val;
    A(int al, int v):alcat(al),val(v){}
    A(){alcat = val = 0;}

};


int main()
{
    A dummy;
    int op,x,n;
    in >> n;
    auto cmp = [](const A& a, const A& b){return a.val < b.val;};
    set<A,decltype(cmp)> valset(cmp),alcatset(cmp);
    int indexinsert=1;
    for(int i = 0 ; i < n ; i++)
    {
        in >> op;
        switch(op)
        {

            case 1:
                {
                    in >> x;
                    dummy.val = x; dummy.alcat= indexinsert;
                    valset.insert(dummy);
                    swap(dummy.val,dummy.alcat);
                    alcatset.insert(dummy);
                    indexinsert++;break;

                }
            case 2:
            {
                in >> x;
                dummy.val = x;
                A el = *alcatset.find(dummy);
                alcatset.erase(dummy);
                dummy.val =el.alcat;
                valset.erase(dummy);
                 break;
            }

            case 3: auto it = valset.begin();
                out<<it->val<<'\n';
                break;
        }
    }

	return 0;
}