#include <stdio.h>
#include <vector>
#include <algorithm>
#include <iostream>
 
/*Heap Sort с применением стандартных средств языка*/
void heapsort_std(int a[], int size){
	std::vector<int> v;
 
	v.assign(a, a + sizeof(a)/sizeof(int));	//Добавили все элементы массива в вектор
	std::make_heap(v.begin(), v.end());		//Преобразовали вектор в кучу
	//Цикл сортировки
	for(int i = size - 1; i >= 0; i--){
		std::pop_heap(v.begin(), v.end());	//Переместили наибольший элемент в конец
		a[i] = v.back();
		v.pop_back();	//Удаляем наибольший элемент кучи из конца вектора
	}
}
 
int main(void) {
	int v[10] = {7, 1, 3, 6, 5, 8, 9, 4, 0, 2};
	heapsort_std(v, 10);
	for(int i = 0; i < 10; i++)
		std::cout << v[i] << ' ';
	return 0;
}