Pagini recente » Cod sursa (job #1295212) | Cod sursa (job #456760) | Cod sursa (job #1294382) | Cod sursa (job #1171235) | Cod sursa (job #1812183)
#include <iostream>
#include <queue>
#include <vector>
#include <stdio.h>
int n;
int A[200000];
using namespace std;
void print_queue(priority_queue<int, vector<int>, greater<int> > q){
while(!q.empty()){
cout << q.top() << " ";
q.pop();
}
cout << "\n";
}
void decapitare_heap(priority_queue<int, vector<int>, greater<int> > *q){
(*q).pop();
}
void inserare_heap(int i, priority_queue<int, vector<int>, greater<int> > *q){
(*q).push(i);
}
void sterge_elem(int pos, priority_queue<int, vector<int>, greater<int> > *q){
queue<int> q2;
int k = A[pos];
while((*q).top() != k){
q2.push((*q).top());
(*q).pop();
}
(*q).pop();
while(!q2.empty()){
(*q).push(q2.front());
q2.pop();
}
}
void print_min(priority_queue<int, vector<int>, greater<int> > q){
cout << q.top() << endl;
}
int main(){
freopen("heapuri.in", "r", stdin);
freopen("heapuri.out", "w", stdout);
int k = 0;
int op;
int it = 0;
priority_queue<int, vector<int>, greater<int> > q;
cin >> n;
for(int i=0; i<n; i++){
cin >> op;
if(op == 3)
print_min(q);
else
cin >> k;
if(op == 1){
A[it+1] = k;
it++;
inserare_heap(k, &q);
}
if(op == 2)
sterge_elem(k, &q);
}
//print_queue(q);
//decapitare_heap(&q);
// sterge_elem(4, &q);
return 0;
}