Изменения
→Псевдокод
<font color=green>// предподсчитаем позиции минимумов в каждом блоке</font>
cur_block = -1
'''for''' i = 0 '''to''' K - 1
B[i] = -1
'''for''' i = 0 '''to''' K - 1
ind = (1 << (j - 1)) + i
'''if''' ind <tex>\&ge</tex> ; K
ST[i][j] = ST[i][j - 1]
'''else if''' A[ST[i][j - 1]] > A[ST[ind][j - 1]]
j = 0
cur_block++
'''if''' j > 0 '''and''' (i <tex>\geqslant</tex> ≥ N '''or''' A[i - 1] < A[i])
type[cur_block] += (1 << (j - 1))
i++