Cod sursa(job #1485865)

Utilizator tudorcomanTudor Coman tudorcoman Data 13 septembrie 2015 10:47:26
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb

#include <fstream>
#include <cassert>
#include <map>
using namespace std;

ifstream fi ("heapuri.in");
ofstream fo ("heapuri.out");

class Heap {
private:
	map <int, int> Heap1;
	map <int, int> Heap2;
	int poz;
public:
	Heap() { poz = 0; }

	void insert(int val) {
		Heap1[++ poz] = val;
		Heap2[val] = poz;
	}

	void erase(int i) {
		map<int, int> :: iterator it = Heap1.find(i);
		Heap2.erase(Heap1[i]);
		Heap1.erase(it);
	}

	int minim() {
		return Heap2.begin() -> first;
	}

} H;

int main() {

	int N;

	for( fi >> N; N; -- N ) {
		int op, param;
		fi >> op;

		switch(op) {
			case 1: {
				fi >> param;
				H.insert(param);
				break;
			}

			case 2: {
				fi >> param;
				H.erase(param);
				break;
			}

			case 3: 
				fo << H.minim() << '\n';
		}
	}

	fi.close();
	fo.close();
	return 0;
}