#include <iostream>
#include <cmath>
using namespace std;
class HeapFromBottom{
private:
int *heap;
int capacity;
public:
HeapFromBottom(int a[],int len){
heap = new int(len+1);
capacity = len;
for(int i = 0;i<len;++i){
heap[i+1]=a[i];
int childIndex = i+1;
while(childIndex>1){
int parentIndex = floor(childIndex/2);
if(heap[parentIndex] < heap[childIndex]){
int temp = heap[parentIndex];
heap[parentIndex] = heap[childIndex];
heap[childIndex]=temp;
childIndex = parentIndex;
}else{
break;
}
}
}
}
void print(){
for(int i=1;i<capacity+1;++i){
cout << heap[i] << " ";
}
cout << endl;
}
}
int main() {
int a[]={2,9,7,6,5,8};
HeapFromBottom *heap=new HeapFromBottom(a,sizeof(a)/sizeof(int));
heap->print();
delete heap;
return 0;
}