#include <bits/stdc++.h>
using namespace std;
class heap{
public:
int arr[100];
int size=0;
void insert(int value){
size++;
arr[size]=value;
int i=size;
while(i>1){
int parent=i/2;
if(arr[parent]<arr[i]){
swap(arr[parent],arr[i]);
i=parent;
}
else return ;
}
}
void print(){
for(int i=0;i<=size;i++){
cout<<arr[i]<<" ";
}
cout<<endl;
}
void del(){
if(size==0){
cout<<"No elements to delete";
return ;
}
arr[1]=arr[size];
size--;
int i=1;
while(i<size){
int leftnode=2*i;
int rightnode=2*i+1;
if(i<size&&arr[i]<arr[leftnode]){
swap(arr[i],arr[leftnode]);
i=leftnode;
}
else if (i<size&&arr[i]<arr[rightnode]){
swap(arr[i],arr[rightnode]);
i=rightnode;
}
else
{
return;
}
}
}
void heapify(int arr[],int size,int index){
int i=index;
int leftnode=2*i;
int rightnode=2*i+1;
if(i<size&&arr[i]<arr[leftnode]){
i=leftnode;
}
if (i<size&&arr[i]<arr[rightnode]){
i=rightnode;
}
if(index!=i){
swap(arr[index],arr[i]);
heapify(arr,size,i);
}
return;
}
};
int main() {
// your code goes here
heap h;
h.insert(10);
h.insert(20);
h.insert(30);
h.insert(5);
h.insert(29);
h.print();
h.del();
h.print();
int arr[6]={-1,32,45,67,87,98};
for(int i=3;i>0;i--){
h.heapify(arr,6,i);
}
for(auto itr:arr){
cout<<itr<<" ";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNsYXNzIGhlYXB7CnB1YmxpYzoKaW50IGFyclsxMDBdOwppbnQgc2l6ZT0wOwp2b2lkIGluc2VydChpbnQgdmFsdWUpewpzaXplKys7CmFycltzaXplXT12YWx1ZTsKaW50IGk9c2l6ZTsKd2hpbGUoaT4xKXsKaW50IHBhcmVudD1pLzI7CmlmKGFycltwYXJlbnRdPGFycltpXSl7CnN3YXAoYXJyW3BhcmVudF0sYXJyW2ldKTsKaT1wYXJlbnQ7Cn0KZWxzZSByZXR1cm4gOwp9Cn0KCnZvaWQgcHJpbnQoKXsKZm9yKGludCBpPTA7aTw9c2l6ZTtpKyspewpjb3V0PDxhcnJbaV08PCIgIjsKfQpjb3V0PDxlbmRsOwp9Cgp2b2lkIGRlbCgpewppZihzaXplPT0wKXsKY291dDw8Ik5vIGVsZW1lbnRzIHRvIGRlbGV0ZSI7CnJldHVybiA7Cn0KYXJyWzFdPWFycltzaXplXTsKc2l6ZS0tOwppbnQgaT0xOwp3aGlsZShpPHNpemUpewppbnQgbGVmdG5vZGU9MippOwppbnQgcmlnaHRub2RlPTIqaSsxOwppZihpPHNpemUmJmFycltpXTxhcnJbbGVmdG5vZGVdKXsKc3dhcChhcnJbaV0sYXJyW2xlZnRub2RlXSk7Cmk9bGVmdG5vZGU7Cgp9CmVsc2UgaWYgKGk8c2l6ZSYmYXJyW2ldPGFycltyaWdodG5vZGVdKXsKc3dhcChhcnJbaV0sYXJyW3JpZ2h0bm9kZV0pOwppPXJpZ2h0bm9kZTsKfQplbHNlCnsKcmV0dXJuOwp9Cn0KfQp2b2lkIGhlYXBpZnkoaW50IGFycltdLGludCBzaXplLGludCBpbmRleCl7CmludCBpPWluZGV4OwppbnQgbGVmdG5vZGU9MippOwppbnQgcmlnaHRub2RlPTIqaSsxOwppZihpPHNpemUmJmFycltpXTxhcnJbbGVmdG5vZGVdKXsKaT1sZWZ0bm9kZTsKfQppZiAoaTxzaXplJiZhcnJbaV08YXJyW3JpZ2h0bm9kZV0pewppPXJpZ2h0bm9kZTsKfQoKaWYoaW5kZXghPWkpewpzd2FwKGFycltpbmRleF0sYXJyW2ldKTsKaGVhcGlmeShhcnIsc2l6ZSxpKTsKfQpyZXR1cm47Cn0KfTsKaW50IG1haW4oKSB7Ci8vIHlvdXIgY29kZSBnb2VzIGhlcmUKaGVhcCBoOwpoLmluc2VydCgxMCk7CmguaW5zZXJ0KDIwKTsKaC5pbnNlcnQoMzApOwpoLmluc2VydCg1KTsKaC5pbnNlcnQoMjkpOwpoLnByaW50KCk7CmguZGVsKCk7CmgucHJpbnQoKTsKaW50IGFycls2XT17LTEsMzIsNDUsNjcsODcsOTh9Owpmb3IoaW50IGk9MztpPjA7aS0tKXsKaC5oZWFwaWZ5KGFyciw2LGkpOwp9CmZvcihhdXRvIGl0cjphcnIpewoJY291dDw8aXRyPDwiICI7Cn0KcmV0dXJuIDA7Cn0=