Cod sursa(job #1750081)

Utilizator delia_ioanaCeapa Delia Ioana delia_ioana Data 29 august 2016 16:18:13
Problema Heapuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>
#include <queue>
#include <vector>

using namespace std;

struct cmp {
	bool operator()(const pair<int, int> &x, const pair<int, int> &y) {
		if (x.first == y.first)
			return x.second > y.second;
		return x.first > y.first;
	}
};

int main() {
	freopen("heapuri.in", "r", stdin);
	freopen("heapuri.out", "w", stdout);
	int N, a, b, pos = 1;
	priority_queue<pair<int, int>,vector<pair<int,int> >, cmp> mypq;
	vector<bool> erased(100000, false);
	scanf("%d", &N);

	for (int i = 0; i < N; i ++) {
		scanf("%d", &a);
		
		if (a == 1) {
			scanf("%d", &b);
			mypq.push(make_pair(b, pos));
			pos ++;
		}
		else if (a == 2) {
			scanf("%d", &b);
			erased[b] = true;
		}
		else if (a == 3) {
			while (erased[mypq.top().second])
				mypq.pop();
			printf("%d", mypq.top().first);
		}
	}
	return 0;
}