57
правок
Изменения
→Псевдокод
== Псевдокод ==
//формирование стопок List<Stack<E>> piles'''for''' (i = 0..n-1) Stack<E> pile = Pile(source[i]) i = BinarySearch(piles, pile) '''if''' (i==piles.size) piles.Add(pile) '''else''' piles[i].Add(Pile(source[i])) piles[piles.size-1].Top.Previous = piles[piles.size-2].Top // для последующего получения НВП //Получение отсортированного массива bool comparePiles (Stack<E> x, Stack<E> y) return x.Peek()<y.Peek() PriorityQueue<Stack<E>> q(piles, comparePiles) '''for'''(i=0..n-1) answer[i]=q.Min().Pop() //Получение наибольшей возрастающей подпоследовательности answer[n-1]=piles[piles.size-1].Top E prev = answer[n-1].Previous '''for'''(i=n-2..0) answer[i]=prev prev = answer[i].Previous
== Пример ==