program zhopa; type masyvas = array[1..1000] of integer; function readshit(var arr : masyvas) : integer; var i, j, n : integer; begin n := 0; readln(j); randomize; for i := 1 to j do begin arr[i] := random(100); n := n + 1; end; readshit := n; end; procedure swap(var a, b : integer); var t : integer; begin t := a; a := b; b := t; end; procedure heapify(var arr : masyvas; i : integer; n : integer); var left, right, max : integer; begin left := 2 * i; right := left + 1; if (left <= n) and (arr[left] > arr[i]) then max := left else max := i; if (right <= n) and (arr[right] > arr[max]) then max := right; if max <> i then begin swap(arr[i], arr[max]); heapify(arr, max, n); writeln('hujak'); end; end; procedure buildheap(var arr : masyvas; n : integer); var i : integer; begin for i := (n div 2) downto 1 do heapify(arr, i, n); end; procedure heapsort(var arr : masyvas; n : integer); var i : integer; begin buildheap(arr, n); for i := n downto 2 do begin swap(arr[1], arr[i]); n := n - 1; heapify(arr, 1, n); writeln('jablyk'); end; end; procedure printshit(arr : masyvas; n : integer); var i : integer; begin for i := 1 to n do writeln(i, '. ', arr[i]); end; ////main var arr : masyvas; n : integer; begin n := readshit(arr); writeln(); printshit(arr, n); writeln(); buildheap(arr, n); writeln(); printshit(arr, n); writeln(); heapsort(arr, n); writeln; printshit(arr, n); writeln; readln; end.