Pagini recente » Cod sursa (job #1532639) | Cod sursa (job #2652950) | Cod sursa (job #2820067) | Cod sursa (job #1697312) | Cod sursa (job #2137125)
#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;
}