Pagini recente » Cod sursa (job #2593861) | Cod sursa (job #1482910) | Cod sursa (job #576187) | Cod sursa (job #512160) | Cod sursa (job #2716888)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream f ("heapuri.in");
ofstream g ("heapuri.out");
int n,c,x,cnt = 1;
bool eliminat[200001];
/// facem un priority queue sa actioneze ca un min_heap
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> pq;
int main()
{
f >> n;
for(int i = 1; i<=n; i++)
{
f >> c;
if(c == 1)
{
f >> x;
/// bagam in coada numarul si al catelea a fost bagat
pq.push({x,cnt++});
}
else if(c == 2)
{
f >> x;
/// il notam ca eliminat
eliminat[x] = 1;
}
else if(c == 3)
{
/// eliminam toate numerele marcate ca eliminat din varful cozii
while(eliminat[pq.top().second])
pq.pop();
/// afisam cel mai mic element
g << pq.top().first<<'\n';
}
}
}