Cod sursa(job #3164634)

Utilizator AndreiMLCChesauan Andrei AndreiMLC Data 3 noiembrie 2023 22:43:40
Problema Heapuri Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>
#include<set>
#include <unordered_set>
#include <queue>

using namespace std;

ifstream f("heapuri.in");
ofstream g("heapuri.out");

unordered_set <int> Hashuri;
priority_queue <pair<int,int>> pq;

int main()
{
	/*
	int n,op,nr;
	f >> n;
	for (int i = 1; i <= n; i++)
	{
		f >> op >> nr;
		if (op == 1)
		{
			Hashuri.insert(nr);
		}
		else if (op == 2)
		{
			Hashuri.erase(nr);
		}
		else {
			g << Hashuri.count(nr) << '\n';
		}
	}*/
	int n, op, nr, totins = 0;
	f >> n;
	for (int i = 1; i <= n; i++)
	{
		f >> op;
		if (op == 1)
		{
			f >> nr;
			totins++;
			pq.push({ -nr,totins });
		}
		else if (op == 2)
		{
			f >> nr;
			priority_queue<pair<int, int>> save;
			int found = 0;
			while (!found && !pq.empty())
			{
				if (pq.top().second == nr)
				{
					found = 1;
				}
				else {
					save.push(pq.top());
				}
				pq.pop();
			}
			while (!save.empty())
			{
				pq.push(save.top());
				save.pop();
			}
		}
		else {
			g << -pq.top().first << '\n';
		}
	}
}