Изменения

Перейти к: навигация, поиск
Псевдокод: Обновлен алгоритм
==== Псевдокод ====
<code>
'''vector<int>''' LIS('''vector<int>''' <tex>\pi</tex>[n])
'''PriorityQueue''' B
'''int''' k = 0
'''int''' n = <tex>\pi</tex>.size <font color=blue>'''vector<int>''' predecessor([n)]</font> <font color=darkgreen>// резервируем <tex>n</tex> позиций</font>
'''for''' i = 1 '''to''' n
x = <tex>\pi</tex>[i]
<font color=darkgreen>// по цепочке от последнего элемента
// восстанавливаем НВП</font>
<font color=blue>'''vector<int>''' result[k]
'''int''' cur = B.max()
result +'''for''' i = [cur] k - 1 '''whiledownto''' <tex>\exists</tex> predecessor[cur] 0 result +[i] = [predecessor[cur]]
cur = predecessor[cur]
'''return''' result</font>
</code>
 
== Оптимизация до O(n log log k)</tex> ==
=== Основная идея ===
47
правок

Навигация