
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int check_heap(int a[], int n);
void insert(int val, int a[], int *n);
int deletemin(int a[],int *n);
 
int main(void) {
  int a[12] = {1,13,71,14,15,80,91,24,60,63};
  int n;
  int i,j;
  int b,c;

  srandom(time(NULL));
  
  b = random() % 100 + 1;
  n = 10;
  insert(b, a, &n);
  

  c = random() % 100 + 1;
  n = 11;
insert(c, a, &n);
 
  printf("%d\n", check_heap(a, 12));

 
  for(i = 0; i < 12; i++){
    printf("%3d",a[i]);

  }

  
  deletemin(a, &n);
  for(j = 0; j < 11; j++){

    printf("%3d",a[j]);

    }

  return 0;
}
 
int check_heap(int a[], int n) {
  int i;
  int m;
  m = (n - 1) / 2;
  for(i = 0; i < m; i++)
    {
      if(a[i] >= a[i * 2 + 1])
	{
	  return 0;
	}
      if(a[i] >= a[i * 2 + 2]){
	return 0;
      }
    }
 

  if(n % 2 == 0){

    if(a[(n - 1)/2] > a[n - 1]){

      return 0;
    }
  }
  return 1;

}
 
void insert(int val, int a[], int *n) {

  int temp;
  int i;

  a[*n] = val;
  i = *n;

  while( 0 < i){
     
    if(a[(i-1)/2] <= a[i])
      {
	break;
      }

    temp =  a[(i-1) / 2];
    a[(i-1) / 2] = a[i];
    a[i] =  temp;
    i = (i - 1)/2;
 

  }

}
 
int deletemin(int a[],int *n){

  int b;
  int temp;  
int i,j,k;
  i = 0;
  b = a[0];
  while(a[i] > 0)
    {
 
      k = a[2*i+1] - a[2*i+2];
      if(k < 0){
  temp =  a[2*i+1];
    a[2*i+1] = a[i];
    a[i] =  temp;
    i = 2*i+1;
 

	}
	if(k > 0)
	  {

  temp =  a[2*i+2];
    a[2*i+2] = a[i];
    a[i] =  temp;
    i = 2*i+2;
    

	  }

	

    }

  
 
  return b;
}
