Cod sursa(job #2734437)

Utilizator HadircaDionisieHadirca Dionisie HadircaDionisie Data 31 martie 2021 21:05:24
Problema Heapuri Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

#define NMAX 2000010


using namespace std;

ifstream fin("heapuri.in");
ofstream fout("heapuri.out");



int main() {

	vector<pair<int, int>> pq;

	int index = 1;

	int n;
	fin >> n;
	for (int i = 0; i < n; i++) {
		int operatie;
		int numar;

		fin >> operatie;
		if (operatie == 1) {
			fin >> numar;
			if (index == 1) {
				pq.push_back({ numar,index++ });
			}
			else if (numar < pq[0].first) {
				pq.push_back({ numar,index++ });
				swap(pq[0], pq[pq.size() - 1]);
			}
			
			else {
				pq.push_back({ numar,index++ });
			}
		}
		else if (operatie == 2) {
			fin >> numar;
			for (int i = 0; i < pq.size(); i++) {
				if (pq[i].second == numar) {
					swap(pq[i], pq[pq.size() - 1]);
					pq.pop_back();
					break;
				}
			}
			pair<int, int> min = pq[0];
			for (int i = 0; i < pq.size(); i++) {
				if (pq[i].first < min.first) {
					min = pq[i];
				}
			}
			for (int i = 0; i < pq.size(); i++) {
				if (pq[i] == min) {
					swap(pq[0], pq[i]);
					break;
				}
			}
		}
		else if (operatie == 3) {
			fout << pq[0].first<<'\n';
		}
	}

}