Pagini recente » Cod sursa (job #440401) | Cod sursa (job #2641772) | Cod sursa (job #2270556) | Cod sursa (job #1023686) | Cod sursa (job #1840884)
#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()){
printf("%d ", q.top());
q.pop();
}
printf("\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){
printf("%d\n", q.top());
}
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;
scanf("%d", &n);
for(int i=0; i<n; i++){
scanf("%d", &op);
if(op == 3)
print_min(q);
else
scanf("%d", &k);
if(op == 1){
A[it+1] = k;
it++;
inserare_heap(k, &q);
}
if(op == 2)
sterge_elem(k, &q);
}
return 0;
}