Pagini recente » Cod sursa (job #2963019) | Cod sursa (job #68622) | Cod sursa (job #2313188) | Cod sursa (job #2121763) | Cod sursa (job #2528982)
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
const int NMAX =200000;
bool viz[NMAX+5];
///valoarea 0 a fiecarui element inseamna ca e inca existent in heap, iar valoarea 1 inseamna ca nu mai este in heap
struct element
{
int valoare, ordine;
bool operator < (const element &a)const
{
return valoare > a.valoare;
}
};
priority_queue <element>pq;
int main()
{
int n, i, k, x;
element a;
a.ordine = 0;
element raspuns;
fin>>n;
for(i =1; i<=n;i++)
{
fin>>k;
if(k == 1)
{
fin>>x;
a.valoare = x;
a.ordine++;
pq.push(a);
continue;
}
if(k==2)
{
fin>>x;
viz[x] = 1;
continue;
}
if(k==3)
{
raspuns = pq.top();
while(viz[raspuns.ordine] ==1)
{
pq.pop();
raspuns = pq.top();
}
fout<<raspuns.valoare<<"\n";
continue;
}
}
return 0;
}