Cod sursa(job #3165163)

Utilizator Robilika2007Robert Badea Robilika2007 Data 5 noiembrie 2023 16:01:47
Problema Heapuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

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

struct nod
{
  int val, cron;
};

vector<nod> heap;

#define MAX_N 200000
int f[MAX_N];

int upHeap(int node)
{
  while(node && heap[node] < heap[node/2])
  {
    swap(heap[node], heap[node/2]);
    node = node/2;
  }
  return node;
}

void downHeap(int node)
{

}

int main()
{
    int n, cod, x;
    in >> n;
    for(int i = 0; i < n; ++i)
    {
      in >> cod;
      if(cod == 1)
      {
        in >> x;
        heap.push_back({x, i + 1});
        f[i+1] =  upHeap(heap.size() - 1);
      } else if(cod == 2)
      {
        in >> x;
        int node = f[x];
        swap(heap[node], heap[heap.size()-1]);
        if(heap[node])
        heap.pop();

      } else if(cod == 3)
      {
        out << heap[0];
      }
    }
    return 0;
}