#include 
#define HEAPSIZE 100

int heap[100]; //heap[1] ÀÌ ·çÆ® ³ëµå 
int n; //µ¥ÀÌÅÍ ÃÑ °³¼ö 

void insert_heap(int item)
{
   // n °³ÀÇ ¿ø¼Ò¸¦ °®´Â ÃÖ´ë È÷ÇÁ¿¡ item À» »ðÀÔÇÑ´Ù 
   int i;

   if (HEAPSIZE==n){
         printf("The heap is full \n");
         exit(1);
    }

    i=++n;
    while( (i!=1) && (item > heap[i/2]) ){
         heap[i]=heap[i/2]; 
         i/=2;
    }

    heap[i]=item;
}

int delete_heap()
{
    int parent,child;
    int item,temp;

    if ( n==0) {
         printf("heap is empty\n");
         exit(1);
    }

    item=heap[1];

    //heap Àç ±¸¼º
    temp=heap[n--];
    parent=1;
    child=2;

    while ( child <= n){

         // ¿À¸¥ÂÊ ¾ÆµéÀÌ Á¸ÀçÇÏ°í , ¿À¸¥ÂÊ ¾ÆµéÀÌ ¿ÞÂÊ ¾Æµéº¸´Ù Å©¸é ¿À¸¥ÂÊ ¾Æµé·Î º¯°æ
         if (child < n && heap[child] < heap[child+1]) child++; 

         // ¸¶Áö¸· µ¥ÀÌÅÍ¿Í ºñ±³ ÈÄ Å©°Å³ª °°À¸¸é Å»Ãâ 
         if (temp >= heap[child]) break;

         // ¾Æ´Ï¸é ÀÚ±âÀ§Ä¡·Î ºÎ¸ð¸¦ ³»¸®°í 
         heap[parent]=heap[child];
         
         parent=child;
         child*=2;
    }
    heap[parent]=temp;
    return item;
}

int main()
{
    insert_heap(3);
    insert_heap(5);
    insert_heap(4);
    printf("%d\n",delete_heap()); //3,5,4 Áß¿¡ Å« µ¥ÀÌÅÍ 5 °¡ Ãâ·Â 
    return 0;
}