Cod sursa(job #2757186)

Utilizator gabrielinelusGabriel-Robert Inelus gabrielinelus Data 4 iunie 2021 12:20:16
Problema Heapuri cu reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <cstdio>
#include <vector>
#include <ext/pb_ds/priority_queue.hpp>

std::vector<__gnu_pbds::priority_queue<int,
				       std::less<int>,
				       __gnu_pbds::binomial_heap_tag,
				       std::allocator<int>>> Heaps;

int main()
{
  freopen("mergeheap.in", "r", stdin);
  freopen("mergeheap.out", "w", stdout);

  int N, Q, M, X, A, B, op;

  scanf("%d%d", &N ,&Q);
  Heaps.resize(N + 1);

  for (int t = 1; t <= Q; ++t) {
    scanf("%d", &op);
    if (op == 1) {
      scanf("%d%d", &M, &X);
      Heaps[M].push(X);
      continue;
    }

    if (op == 2) {
      scanf("%d", &M);
      printf("%d\n", Heaps[M].top());
      Heaps[M].pop();
      continue;
    }

    scanf("%d%d", &A, &B);
    Heaps[A].join(Heaps[B]);
    
  }
  
  return 0;
}