#include<iostream>
using namespace std;
void heapify_delete(int a[], int n, int i){
int left = 2*i + 1;
int right = 2*i + 2;
int largest = i;
if(a[left] > a[largest] && left < n){
largest = left;
}
if(a[right] > a[largest] && right < n){
largest = right;
}
if(largest != i){
swap(a[largest], a[i]);
heapify_delete(a, n, largest);
}
}
void heapify_insert(int a[], int n, int i){
int parent = (i-1)/2;
if(a[i] > a[parent]){
swap(a[i], a[parent]);
heapify_insert(a, n, parent);
}
}
void insert(int a[], int &n, int key){
n = n+1;
a[n-1] = key;
heapify_insert(a, n, n-1);
}
void del(int a[], int &n){
a[0] = a[n-1];
n--;
heapify_delete(a, n, 0);
}
void print(int a[], int n){
for(int i = 0; i < n; i++) cout << a[i] << " ";
cout << endl;
}
int main(){
int n,i;
clock_t time_req;
time_req=clock();
cout << "enter size of the array" << endl;
cin >> n;
int a[n];
cout<< "enter elements" << endl;
for(i = 0; i < n; i++) cin >> a[i];
insert(a, n, 15);
print(a, n);
del(a, n);
print(a, n);
//cout<< "the sorted array is" <<endl;
// for(m=0;m<n;m++)
// cout<<a[m]<<" ";
// cout<<endl;
time_req=clock()-time_req;
cout<<"the time taken is"<<endl;
cout<<(float)time_req/CLOCKS_PER_SEC<<"seconds"<<endl;
cout<<"The bytes occupied is"<<endl;
cout<<(sizeof(a[n])*n)+sizeof(n)+sizeof(i);
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIGhlYXBpZnlfZGVsZXRlKGludCBhW10sIGludCBuLCBpbnQgaSl7CglpbnQgbGVmdCA9IDIqaSArIDE7CglpbnQgcmlnaHQgPSAyKmkgKyAyOwoJaW50IGxhcmdlc3QgPSBpOwoJCglpZihhW2xlZnRdID4gYVtsYXJnZXN0XSAmJiBsZWZ0IDwgbil7CgkJbGFyZ2VzdCA9IGxlZnQ7Cgl9CglpZihhW3JpZ2h0XSA+IGFbbGFyZ2VzdF0gJiYgcmlnaHQgPCBuKXsKCQlsYXJnZXN0ID0gcmlnaHQ7Cgl9CgkKCWlmKGxhcmdlc3QgIT0gaSl7CgkJc3dhcChhW2xhcmdlc3RdLCBhW2ldKTsKCQloZWFwaWZ5X2RlbGV0ZShhLCBuLCBsYXJnZXN0KTsKCX0KfQoKdm9pZCBoZWFwaWZ5X2luc2VydChpbnQgYVtdLCBpbnQgbiwgaW50IGkpewoJaW50IHBhcmVudCA9IChpLTEpLzI7CgkKCWlmKGFbaV0gPiBhW3BhcmVudF0pewoJCXN3YXAoYVtpXSwgYVtwYXJlbnRdKTsKCQloZWFwaWZ5X2luc2VydChhLCBuLCBwYXJlbnQpOwoJfQp9Cgp2b2lkIGluc2VydChpbnQgYVtdLCBpbnQgJm4sIGludCBrZXkpewoJbiA9IG4rMTsKCWFbbi0xXSA9IGtleTsKCWhlYXBpZnlfaW5zZXJ0KGEsIG4sIG4tMSk7Cn0KCnZvaWQgZGVsKGludCBhW10sIGludCAmbil7CglhWzBdID0gYVtuLTFdOwoJbi0tOwoJaGVhcGlmeV9kZWxldGUoYSwgbiwgMCk7Cn0KCnZvaWQgcHJpbnQoaW50IGFbXSwgaW50IG4pewoJZm9yKGludCBpID0gMDsgaSA8IG47IGkrKykgY291dCA8PCBhW2ldIDw8ICIgIjsKCWNvdXQgPDwgZW5kbDsKfQoKaW50IG1haW4oKXsgCglpbnQgbixpOwoJY2xvY2tfdCB0aW1lX3JlcTsKCXRpbWVfcmVxPWNsb2NrKCk7Cgljb3V0IDw8ICJlbnRlciBzaXplIG9mIHRoZSBhcnJheSIgPDwgZW5kbDsKCWNpbiA+PiBuOwogICAgaW50IGFbbl07Cgljb3V0PDwgImVudGVyIGVsZW1lbnRzIiA8PCBlbmRsOwoJZm9yKGkgPSAwOyBpIDwgbjsgaSsrKSBjaW4gPj4gYVtpXTsKCQoJaW5zZXJ0KGEsIG4sIDE1KTsKCXByaW50KGEsIG4pOwoJZGVsKGEsIG4pOwoJcHJpbnQoYSwgbik7CgkKICAgLy9jb3V0PDwgInRoZSBzb3J0ZWQgYXJyYXkgaXMiIDw8ZW5kbDsKICAgCiAgLy8gZm9yKG09MDttPG47bSsrKQoJCS8vIGNvdXQ8PGFbbV08PCIgIjsKICAvLyBjb3V0PDxlbmRsOwogICAKICAgdGltZV9yZXE9Y2xvY2soKS10aW1lX3JlcTsKICAgY291dDw8InRoZSB0aW1lIHRha2VuIGlzIjw8ZW5kbDsKICAgY291dDw8KGZsb2F0KXRpbWVfcmVxL0NMT0NLU19QRVJfU0VDPDwic2Vjb25kcyI8PGVuZGw7CiAgIAogICBjb3V0PDwiVGhlIGJ5dGVzIG9jY3VwaWVkIGlzIjw8ZW5kbDsKICAgY291dDw8KHNpemVvZihhW25dKSpuKStzaXplb2Yobikrc2l6ZW9mKGkpOwp9