Cod sursa(job #1458575)

Utilizator al.mocanuAlexandru Mocanu al.mocanu Data 7 iulie 2015 23:08:13
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <stdio.h>
#include <queue>
#define MAX 200005
using namespace std;

struct compar{
	bool operator() (int a, int b){return a > b;}
};

priority_queue<int, vector<int>, compar> q, removed;
vector<int> v;

int main(){
	freopen("heapuri.in", "r", stdin);
	freopen("heapuri.out", "w", stdout);
	int n, tip, x, i;
	scanf("%d", &n);
	for(i = 0; i < n; i++){
		scanf("%d", &tip);
		switch(tip){
			case 1:{
							 scanf("%d", &x);
							 q.push(x);
							 v.push_back(x);
						 } break;
			case 2:{
							 scanf("%d", &x);
							 removed.push(v[x - 1]);
						 } break;
			default:{
								while(!q.empty() && !removed.empty() && q.top() == removed.top()){
									q.pop();
									removed.pop();
								}
								printf("%d\n", q.top());
							}
		}
	}
	return 0;
}