const N = 100*1000; var A: array[1..N] of integer; i,j, pom: integer; procedure VytvorHaldu( zac, kon: integer ); var i, j: integer; x: integer; begin i := zac; j := 2*i; x := A[i]; while j <= kon do begin if j+1 <= kon then if A[j+1] < A[j] then j := j+1; if x < A[j] then break; A[i] := A[j]; i := j; j := 2*i end; A[i] := x end; begin { randomize; } for i:=1 to N do A[i] := random(N); for i:=N div 2 + 1 downto 1 do VytvorHaldu( i, N ); for i:=N downto 1 do begin pom := A[1]; A[1] := A[i]; A[i] := pom; VytvorHaldu( 1, i-1 ) end; writeln( 'setrideno' ) end. program p181203; const N = 100000; var A: array[1..N] of integer; i,j, pom: integer; begin { randomize; } for i:=1 to N do A[i] := random(N); for j:=1 to N-1 do for i:=1 to N-1 do if A[i] > A[i+1] then begin pom := A[i]; A[i] := A[i+1]; A[i+1] := pom end; writeln( 'setrideno' ); readln end.