Cod sursa(job #738459)

Utilizator catalinb91Catalin Badea catalinb91 Data 20 aprilie 2012 14:42:33
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <iostream>
#include <queue>
#include <vector>
#include <map>

using namespace std;

int main()
{
	ifstream input("heapuri.in");
	ofstream output("heapuri.out");

	priority_queue<int, vector<int>, greater<int> > heap;
	vector<int> history;
	map<int, int> count;

	int commands_number;

	// start count from 1
	history.push_back(-1);

	input >> commands_number;

	for (int i = 0; i < commands_number; i++) {
		int command, value;
		input >> command;
		switch (command) {
			case 1:
				input >> value;
				history.push_back(value);
				count[value]++;
				heap.push(value);
				break;
			case 2:
				input >> value;
				count[history[value]]--;
				break;
			case 3:
				while (count[heap.top()] == 0)
					heap.pop();
				output << heap.top() << "\n";
				break;
		}
	}

	return 0;
}