Language: C++

#include <iostream>

using namespace std;

struct Heap{
	int Array[2000000];
	int tamanho;
	
	int pai(int input){
		return (input - 1)/2;
	}
	
	int filhoEsquerdo(int input){
		return (input 2*input + 1);
	}
	
	int filhoDireito(int input){
		return (input 2*input + 2);
	}
	
	void troca(int *a, int *b){
		int temp = *x;
		temp = *a;
		*a = *b;
		*b = temp;
		return;
	}
	
	// Arruma após inserção
	void HeapifyRemover(int arrumar){
		int esquerdo = filhoEsquerdo(arrumar);
		int direito = filhoDireito(arrumar);
		
		int maior = arrumar;
		
		//Vejo quem é maior
		if (esquerdo < tamanho && Array[esquerda] > Array[arrumar]){
			maior = esquerdo;
		}
		if (direito < tamanho && Array[direito] > Array[arrumar]){
			maior = direito;
		}
		if (maior != arrumar){
			troca(&Array[maior], &Array[arrumar]);
			Heapify(maior);
		}
	}
	
	void HeapifyInserir(int arrumar){
		if (arrumar != 0 && Array[pai(arrumar) < Array[arrumar]]{
			troca(&Array[arrumar], &Array[arrumar]);
			HeapifyInserir(pai(arrumar));
		}
	}
	
	void inserirHeap(int valor){
		Heap.Array[tamanho] = valor;
		HeapifyInserir(tamanho);
		Heap.tamanho++;
	}
	
	int removerRaiz(){
		int raiz = Array[0];
		Array[0] = Array[tamanho-1];
		Heap.tamanho--;
		return raiz;
	}
};

int main(){
	Heap heap;
	string operacao; int valor;
	while(cin >> operacao){
		if (operacao == "insert"){
			cin >> valor;
			heap.inserirHeap(valor);
		} else if (operacao == "extract"){
			cout << heap.removerRaiz; endl;
		} else {
			break;
		}
	}
	return 0;
}



Compiler output:
a.cc:84:2: error: expected '}' at end of input
   84 | }
      |  ^
a.cc:5:12: note: to match this '{'
    5 | struct Heap{
      |            ^
a.cc: In member function 'int Heap::filhoEsquerdo(int)':
a.cc:14:31: error: expected ')' before numeric constant
   14 |                 return (input 2*input + 1);
      |                               ^
a.cc:14:24: note: to match this '('
   14 |                 return (input 2*input + 1);
      |                        ^
a.cc: In member function 'int Heap::filhoDireito(int)':
a.cc:18:31: error: expected ')' before numeric constant
   18 |                 return (input 2*input + 2);
      |                               ^
a.cc:18:24: note: to match this '('
   18 |                 return (input 2*input + 2);
      |                        ^
a.cc: In member function 'void Heap::troca(int*, int*)':
a.cc:22:29: error: 'x' was not declared in this scope
   22 |                 int temp = *x;
      |                             ^
a.cc: In member function 'void Heap::HeapifyRemover(int)':
a.cc:37:49: error: 'esquerda' was not declared in this scope; did you mean 'esquerdo'?
   37 |                 if (esquerdo < tamanho && Array[esquerda] > Array[arrumar]){
      |                                                 ^~~~~~~~
      |                                                 esquerdo
a.cc:45:25: error: 'Heapify' was not declared in this scope; did you mean 'Heap'?
   45 |                         Heapify(maior);
      |                         ^~~~~~~
      |                         Heap
a.cc: In member function 'void Heap::HeapifyInserir(int)':
a.cc:50:73: error: expected ')' before '{' token
   50 |                 if (arrumar != 0 && Array[pai(arrumar) < Array[arrumar]]{
      |                                                                         ^
a.cc:50:20: note: to match this '('
   50 |                 if (arrumar != 0 && Array[pai(arrumar) < Array[arrumar]]{
      |                    ^
a.cc:54:9: error: expected primary-expression before '}' token
   54 |         }
      |         ^
a.cc: At global scope:
a.cc:84:2: error: expected unqualified-id at end of input
   84 | }
      |  ^