#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;
}
}
}
};
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();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNsYXNzIGhlYXB7CglwdWJsaWM6CglpbnQgYXJyWzEwMF07CglpbnQgc2l6ZT0wOwoJdm9pZCBpbnNlcnQoaW50IHZhbHVlKXsKCQlzaXplKys7CgkJYXJyW3NpemVdPXZhbHVlOwoJCWludCBpPXNpemU7CgkJd2hpbGUoaT4xKXsKCQkJaW50IHBhcmVudD1pLzI7CgkJCWlmKGFycltwYXJlbnRdPGFycltpXSl7CgkJCQlzd2FwKGFycltwYXJlbnRdLGFycltpXSk7CgkJCQlpPXBhcmVudDsKCQkJfQoJCQllbHNlIHJldHVybiA7CgkJfQoJfQoJCgl2b2lkIHByaW50KCl7CgkJZm9yKGludCBpPTA7aTw9c2l6ZTtpKyspewoJCQljb3V0PDxhcnJbaV08PCIgIjsKCQl9CgkJY291dDw8ZW5kbDsKCX0KCQoJdm9pZCBkZWwoKXsKCQlpZihzaXplPT0wKXsKCQkJY291dDw8Ik5vIGVsZW1lbnRzIHRvIGRlbGV0ZSI7CgkJCXJldHVybiA7CgkJfQoJCWFyclsxXT1hcnJbc2l6ZV07CgkJc2l6ZS0tOwoJCWludCBpPTE7CgkJd2hpbGUoaTxzaXplKXsKCQkJaW50IGxlZnRub2RlPTIqaTsKCQkJaW50IHJpZ2h0bm9kZT0yKmkrMTsKCQkJaWYoaTxzaXplJiZhcnJbaV08YXJyW2xlZnRub2RlXSl7CgkJCQlzd2FwKGFycltpXSxhcnJbbGVmdG5vZGVdKTsKCQkJCWk9bGVmdG5vZGU7CgkJCQkKCQkJfQoJCQllbHNlIGlmIChpPHNpemUmJmFycltpXTxhcnJbcmlnaHRub2RlXSl7CgkJCQlzd2FwKGFycltpXSxhcnJbcmlnaHRub2RlXSk7CgkJCQlpPXJpZ2h0bm9kZTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXJldHVybjsKCQkJfQoJCX0KCX0KfTsKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgloZWFwIGg7CgloLmluc2VydCgxMCk7CgloLmluc2VydCgyMCk7CgloLmluc2VydCgzMCk7CgloLmluc2VydCg1KTsKCWguaW5zZXJ0KDI5KTsKCWgucHJpbnQoKTsKCWguZGVsKCk7CgloLnByaW50KCk7CgkKCXJldHVybiAwOwp9