heap#4
#include <iostream>
using namespace std;
#define msz 100
// void swap(int &a, int &b){
// int t = a;
// a = b;
// b = t;
// }
void Maxheapify(int arr[], int n, int i)
{
int lrg = i;
int l = 2i + 1;
int r = 2i + 2;
if(l <n && arr[l] > arr[lrg]) lrg = l;
if(r <n && arr[r] > arr[lrg]) lrg = r;
if(lrg != i){
swap(arr[i], arr[lrg]);
Maxheapify(arr, n, lrg);
}
}
void buildHeap(int arr[], int n)
{
for(int i = n/2 -1; i>= 0 ;i--){
Maxheapify(arr, n, i);
}
}
void deleteRoot(int arr[], int &n)
{
arr[0] = arr[ n - 1];
n--;
buildHeap(arr,n);
}
void printArray(int arr[], int n)
{
for(int i=0;i<n;i++)
cout<<arr[i]<<" ";
}
int main()
{
int n;
cin >> n;
int arr[msz];
for (int i = 0; i < n; ++i)
cin >> arr[i];
buildHeap(arr, n);
deleteRoot(arr, n);
printArray(arr, n);
return 0;
}