Cod sursa(job #3203437)

Utilizator AlexMoto2006Motoasca Alexandru-Lucian AlexMoto2006 Data 13 februarie 2024 17:46:54
Problema Heapuri cu reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#include <set>
#include <vector>
using namespace std;

ifstream cin("mergeheap.in");
ofstream cout("mergeheap.out");

int n,m,x,c;
vector<multiset<int, greater<>>> v;
int nr;
int main()
{
	cin >> n >> m;
	int mult;
	v = vector<multiset<int, greater<>>> (n + 1);
	for (int i = 1; i <= m; i++)
	{
		cin >> c >> mult;
		if (c == 1)
		{
			cin >> x;
			v[mult].insert(x);
		}
		if (c == 2)
		{
			cout << *v[mult].begin() << '\n';
			v[mult].erase(v[mult].begin());
		}
		if (c == 3)
		{
				int mult1;
				cin >> mult1;
				if(v[mult].size() < v[mult1].size())
					swap(v[mult], v[mult1]);
				v[mult].insert(v[mult1].begin(), v[mult1].end());
				v[mult1].clear();
		}
	}
    return 0;
}