function blocking_tournament-max(var A : array[0..N - 1]); for i := 0 to N / log(N) - 1 pardo B[i] := A[i*log(N)]; for j := 1 to log(N) - 1 do B[i] := max(B[i], A[i*log(N) + j]); return tournament-max(B[0..(N / log(N) - 1)]); function tournament-max(var A : array[0..N - 1]); for i := roof(log(N)) - 1 to 0 do for j := 0 to 2^i - 1 pardo A[j] := max(A[j*2], A[j*2+1]); return A[0];