Cod sursa(job #2938908)

Utilizator PescaPescariu Matei Alexandru Pesca Data 12 noiembrie 2022 19:06:51
Problema Heapuri cu reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("mergeheap.in");
ofstream fout("mergeheap.out");
int n;
priority_queue <int> pq[105];
int idx[105];
void r1()
{
    int x,y;
    fin>>x>>y;
    x=idx[x];
    pq[x].push(y);
}
void r2()
{
    int x;
    fin>>x;
    x=idx[x];
    int rez=pq[x].top();
    fout<<rez<<'\n';
    pq[x].pop();

}
void r3()
{
    int a,b;
    fin>>a>>b;
    if(pq[idx[a]].size()<pq[idx[b]].size())
        swap(idx[a],idx[b]);
    while(pq[idx[b]].size()>0)
    {
        pq[idx[a]].push(pq[idx[b]].top());
        pq[idx[b]].pop();
    }
}
int main()
{
    int q;
    fin>>n>>q;
    for(int i=1;i<=n;i++)
    idx[i]=i;
    while(q--)
    {
        int type;
        fin>>type;
        if(type==1)r1();
        if(type==2)r2();
        if(type==3)r3();
    }
}