#include #include #define LINESIZE 100 struct heap { int size; int* line; int capacity; }; int parent(int i){ return (i -1) / 2; } int lavy_syn(int i){ return (2*i) + 1; } int pravy_syn(int i){ return (2*i) + 2; } struct heap* create_heap(int capacity){ struct heap* h = calloc(1,sizeof(struct heap)); h->line = calloc(capacity,sizeof(int)); h->capacity =capacity; h->size = 0; return h; } void check_heap_property(struct heap* h){ for(int i =0;isize;i++){ int lavy = lavy_syn(i); int pravy = pravy_syn(i); if(pravy >= h->size || lavy>=h->size){ break; } if(h->line[i] > h->line[pravy] || h->line[i] > h->line[lavy]){ printf("%s\n","Niejekopa."); exit(0); } } } void delete_heap(struct heap* h){ free(h->line); free(h); } //void vymen(int arr[],int a, int b){ // int pom = arr[a]; // arr[a] = arr[b]; // arr[b] = pom; //} void add(struct heap* h,int value){ int i = h->size; if(h->size>=h->capacity){ return; } h->size += 1; h->line[i] = value; } void print(struct heap* h,int count_spaces,int index){ if(index>=h->size){ return ; } for(int i =0;iline[index]); print(h,count_spaces+1,lavy_syn(index)); print(h,count_spaces+1,pravy_syn(index)); } void sort(struct heap *h){ int i = h->size-1; int p = parent(i); while(h->line[i] < h->line[p]) { int arr[] = h->line; int pom = arr[i]; arr[i] = arr[p]; arr[p] = pom; //vymen(h->line,i, p); i = parent(i); } } int main(){ int i = 0; int temp_line[LINESIZE] = {0}; while(scanf("%d",&temp_line[i])== 1) { i++; } struct heap* h = create_heap(i); for(int j =0;j