Language: C++

#define _USE_MATH_DEFINES
#include <iostream>
#include <vector>
#include <math.h>
#include <string>
#include <string.h>
#include <stack>
#include <algorithm>
#include <stdio.h>
#include <functional>
using namespace std;

vector<int> heap;

void heapify_up(int index)
{
	if (heap[index / 2] < heap[index])
	{
		swap(heap[index / 2], heap[index]);
		heapify_up(index / 2);
	}
	return;
}

void heapify_down(int index)
{
	if (heap.size() == 0)
	{
		return;
	}

	if (heap.size() - 1 < index * 2 + 1)
	{
		return;
	}
	else if (heap.size() - 1 == index * 2 + 1)
	{
		if (heap[index * 2 + 1] > heap[index])
		{
			swap(heap[index * 2 + 1], heap[index]);
			heapify_down(index * 2 + 1);
		}
	}
	else
	{
		if (heap[index * 2 + 1] < heap[index * 2 + 2])
		{
			if (heap[index * 2 + 1] > heap[index])
			{
				swap(heap[index * 2 + 1], heap[index]);
				heapify_down(index * 2 + 1);
			}
		}
		else
		{
			if (heap[index * 2 + 2] > heap[index])
			{
				swap(heap[index * 2 + 2], heap[index]);
				heapify_down(index * 2 + 2);
			}
		}
	}
	return;
}

void insert(int key)
{
	heap.push_back(key);
	heapify_up(heap.size() - 1);
	return;
}

int extract_max()
{
	int res = heap[0];
	heap[0] = heap[heap.size() - 1];
	heap.erase(heap.size() - 1);
	heapify_down(0);
	return res;
}

int main()
{
	string input;
	while (cin >> input != "end")
	{
		if (input == "extract")
		{
			cout << extract_max() << endl;
		}
		else
		{
			int k;
			cin >> k;
			insert(k);
		}
	}

	return 0;
}

Compiler output:
a.cc: In function 'int extract_max()':
a.cc:77:19: error: no matching function for call to 'std::vector<int>::erase(std::vector<int>::size_type)'
   77 |         heap.erase(heap.size() - 1);
      |         ~~~~~~~~~~^~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/14/vector:66,
                 from a.cc:3:
/usr/include/c++/14/bits/stl_vector.h:1536:7: note: candidate: 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::erase(const_iterator) [with _Tp = int; _Alloc = std::allocator<int>; iterator = std::vector<int>::iterator; const_iterator = std::vector<int>::const_iterator]'
 1536 |       erase(const_iterator __position)
      |       ^~~~~
/usr/include/c++/14/bits/stl_vector.h:1536:28: note:   no known conversion for argument 1 from 'std::vector<int>::size_type' {aka 'long unsigned int'} to 'std::vector<int>::const_iterator'
 1536 |       erase(const_iterator __position)
      |             ~~~~~~~~~~~~~~~^~~~~~~~~~
/usr/include/c++/14/bits/stl_vector.h:1564:7: note: candidate: 'std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::erase(const_iterator, const_iterator) [with _Tp = int; _Alloc = std::allocator<int>; iterator = std::vector<int>::iterator; const_iterator = std::vector<int>::const_iterator]'
 1564 |       erase(const_iterator __first, const_iterator __last)
      |       ^~~~~
/usr/include/c++/14/bits/stl_vector.h:1564:7: note:   candidate expects 2 arguments, 1 provided
a.cc: In function 'int main()':
a.cc:85:29: error: no match for 'operator!=' (operand types are 'std::basic_istream<char>' and 'const char [4]')
   85 |         while (cin >> input != "end")
      |                ~~~~~~~~~~~~ ^~ ~~~~~
      |                    |           |
      |                    |           const char [4]
      |                    std::basic_istream<char>
In file included from /usr/include/c++/14/iosfwd:42,
                 from /usr/include/c++/14/ios:40,
                 from /usr/include/c++/14/ostream:40,
                 from /usr/include/c++/14/iostream:41,
                 from a.cc:2:
/usr/include/c++/14/bits/postypes.h:197:5: note: candidate: 'template<class _StateT> bool std::operator!=(const fpos<_StateT>&, const fpos<_StateT>&)'
  197 |     operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
      |     ^~~~~~~~
/usr/include/c++/14/bits/postypes.h:197:5: note:   template argument deduction/substitution failed:
a.cc:85:32: note:   'std::basic_istream<char>' is not derived from 'const std::fpos<_StateT>'
   85 |         while (cin >> input != "end")
      |                                ^~~~~
In file included from /usr/include/c++/14/string:43,
                 from /usr/include/c++/14/bits/locale_classes.h:40,
                 from /usr/include/c++/14/bits/ios_base.h:41,
                 from /usr/include/c++/14/ios:44:
/usr/include/c++/14/bits/allocator.h:243:5: note: candidate: 'template<class _T1, class _T2> bool std::operator!=(const allocator<_CharT>&, const allocator<_T2>&)'
  243 |     operator!=(const allocator<_T1>&, const allocator<_T2>&)
      |     ^~~~~~~~
/usr/include/c++/14/bits/allocator.h:243:5: note:   template argument deduction/substitution failed:
a.cc:85:32: note:   'std::basic_istream<char>' is not derived from 'const std::allocator<_CharT>'
   85 |         while (cin >> input != "end")
      |                                ^~~~~
In file included from /usr/include/c++/14/string:48:
/usr/include/c++/14/bits/stl_iterator.h:455:5: note: candidate: 'template<class _Iterator> constexpr bool std::operator!=(const reverse_iterator<_Iterator>&, const reverse_iterator<_Iterator>&)'
  455 |     operator!=(const reverse_iterator<_Iterator>& __x,
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_iterator.h:455:5: note:   template argument deduction/substitution failed:
a.cc:85:32: note:   'std::basic_istream<char>' is not derived from 'const std::reverse_iterator<_Iterator>'
   85 |         while (cin >> input != "end")
      |                                ^~~~~
/usr/include/c++/14/bits/stl_iterator.h:500:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr bool std::operator!=(const reverse_iterator<_Iterator>&, const reverse_iterator<_IteratorR>&)'
  500 |     operator!=(const reverse_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_iterator.h:500:5: note:   template argument deduction/substitution failed:
a.cc:85:32: note:   'std::basic_istream<char>' is not derived from 'const std::reverse_iterator<_Iterator>'
   85 |         while (cin >> input != "end")
      |                                ^~~~~
/usr/include/c++/14/bits/stl_iterator.h:1686:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr bool std::operator!=(const move_iterator<_IteratorL>&, const move_iterator<_IteratorR>&)'
 1686 |     operator!=(const move_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_iterator.h:1686:5: note:   template argument deduction/substitution failed:
a.cc:85:32: note:   'std::basic_istream<char>' is not derived from 'const std::move_iterator<_IteratorL>'
   85 |         while (cin >> input != "end")
      |                                ^~~~~
/usr/include/c++/14/bits/stl_iterator.h:1753:5: note: candidate: 'template<class _Iterator> constexpr bool std::operator!=(const move_iterator<_IteratorL>&, const move_iterator<_IteratorL>&)'
 1753 |     operator!=(const move_iterator<_Iterator>& __x,
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_iterator.h:1753:5: note:   template argument deduction/substitution failed:
a.cc:85:32: note:   'std::basic_istream<char>' is not derived from 'const std::move_iterator<_IteratorL>'
   85 |         while (cin >> input != "end")
      |                                ^~~~~
In file included from /usr/include/c++/14/bits/stl_algobase.h:64,
                 from /usr/include/c++/14/string:51:
/usr/include/c++/14/bits/stl_pair.h:1052:5: note: candidate: 'template<class _T1, class _T2> constexpr bool std::operator!=(const pair<_T1, _T2>&, const pair<_T1, _T2>&)'
 1052 |     operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_pair.h:1052:5: note:   template argument deduction/substitution failed:
a.cc:85:32: note:   'std::basic_istream<char>' is not derived from 'const std::pair<_T1, _T2>'
   85 |         while (cin >> input != "end")
      |                                ^~~~~
In file included from /usr/include/c++/14/bits/basic_string.h:47,
                 from /usr/include/c++/14/string:54:
/usr/include/c++/14/string_view:651:5: note: candidate: 'template<class _CharT, class _Traits> constexpr bool std::operator!=(basic_string_view<_CharT, _Traits>, basic_string_view<_CharT, _Traits>)'
  651 |     operator!=(basic_string_view<_CharT, _Traits> __x,
      |     ^~~~~~~~
/usr/include/c++/14/string_view:651:5: note:   template argument deduction/substitution failed:
a.cc:85:32: note:   'std::basic_istream<char>' is not derived from 'std::basic_string_view<_CharT, _Traits>'
   85 |         while (cin >> input != "end")
      |                                ^~~~~
/usr/include/c++/14/string_view:658:5: note: candidate: 'template<class _CharT, class _Traits> constexpr bool std::operator!=(basic_string_view<_CharT, _Traits>, __type_identity_t<basic_string_view<_CharT, _Traits> >)'
  658 |     operator!=(basic_string_view<_CharT, _Traits> __x,
      |     ^~~~~~~~
/usr/include/c++/14/string_view:658:5: note:   template argument deduction/substitution failed:
a.cc:85:32: note:   'std::basic_istream<char>' is not derived from 'std::basic_string_view<_CharT, _Traits>'
   85 |         while (cin >> input != "end")
      |                                ^~~~~
/usr/include/c++/14/string_view:666:5: note: candidate: 'template<class _CharT, class _Traits> constexpr bool std::operator!=(__type_identity_t<basic_string_view<_CharT, _Traits> >, basic_string_view<_CharT, _Traits>)'
  666 |     operator!=(__type_identity_t<basic_string_view<_CharT, _Traits>> __x,
      |     ^~~~~~~~
/usr/include/c++/14/string_view:666:5: note:   template argument deduction/substitution failed:
a.cc:85:32: note:   mismatched types 'std::basic_string_view<_CharT, _Traits>' and 'const char*'
   85 |         while (cin >> input != "end")
      |                                ^~~~~
/usr/include/c++/14/bits/basic_string.h:3833:5: note: candidate: 'template<class _CharT, class _Traits, class _Alloc> bool std::operator!=(const __cxx11::basic_string<_CharT, _Traits, _Allocator>&, const __cxx11::basic_string<_CharT, _Traits, _Allocator>&)'
 3833 |     operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/14/bits/basic_string.h:3833:5: note:   template argument deduction/substitution failed:
a.cc:85:32: note:   'std::basic_istream<char>' is not derived from 'const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>'
   85 |         while (cin >> input != "end")
      |                                ^~~~~
/usr/include/c++/14/bits/basic_string.h:3847:5: note: candidate: 'template<class _CharT, class _Traits, class _Alloc> bool std::operator!=(const _CharT*, const __cxx11::basic_string<_CharT, _Traits, _Allocator>&)'
 3847 |     operator!=(const _CharT* __lhs,
      |     ^~~~~~~~
/usr/include/c++/14/bits/basic_string.h:3847:5: note:   template argument deduction/substitution failed:
a.cc:85:32: note:   mismatched types 'const _CharT*' and 'std::basic_istream<char>'
   85 |         while (cin >> input != "end")
      |                                ^~~~~
/usr/include/c++/14/bits/basic_string.h:3860:5: note: candidate: 'template<class _CharT, class _Traits, class _Alloc> bool std::operator!=(const __cxx11::basic_string<_CharT, _Traits, _Allocator>&, const _CharT*)'
 3860 |     operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/14/bits/basic_string.h:3860:5: note:   template argument deduction/substitution failed:
a.cc:85:32: note:   'std::basic_istream<char>' is not derived from 'const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>'
   85 |         while (cin >> input != "end")
      |                                ^~~~~
In f