#include "file_prio.h"
void swap(struct sommetpond* tableau, int pos1,int pos2) {
    struct sommetpond save = tableau[pos1];
    tableau[pos1]=tableau[pos2];
    tableau[pos2]=save;
}

heap* create_heap(int capacity){
    heap* res = malloc(sizeof(heap));
    res->size=0;
    res->contents = malloc(capacity*sizeof(struct sommetpond));
    return res;
}

void insere(int x,int p, heap* tas){
    int taille = tas->size;
    tas->contents[taille].val=x;
    tas->contents[taille].poids=p;
    int pos = taille;
    while (pos>0 && tas->contents[pos].poids < tas->contents[pos/2].poids ){
        swap(tas->contents,pos,pos/2);
        pos=pos/2;
    }
    tas->size++;
}



struct sommetpond supprime_mini (heap* tas){
    assert(tas->size>0);
    struct sommetpond res = tas->contents[0];
    tas->size=(tas->size)-1;
    tas->contents[0]=tas->contents[tas->size];
    int i = 0;
    while ((2*i+1<tas->size && tas->contents[2*i+1].poids<tas->contents[i].poids)||
            (2*i+2<tas->size && tas->contents[2*i+2].poids<tas->contents[i].poids)
          ) {
          if (2*i+2>tas->size || tas->contents[2*i+1].poids<tas->contents[2*i+2].poids){
                swap(tas->contents, i, 2*i+1);
                i=2*i+1;

          }
          else{
                swap(tas->contents,i, 2*i+2);
                i=2*i+2;

          }
          }
    return res;
    }

   

