Longest increasing subsequence: Difference between revisions

Line 466:
infix 4 ≡
 
(≡) :: Eq α ⇒ α → α → Bool
(≡) = (==)
 
(∘) = (.)
 
 
lis ∷ Ord α ⇒ [α] → [α]
Line 474 ⟶ 477:
pileTops ← newSTArray (min 1 lxs , lxs) []
i ← foldM (stack pileTops) 0 xs
readArray pileTops i >>= return . reverse
 
stack ∷ (Integral ι, Ord ε, Ix ι, MArray α [ε] μ)
Line 480 ⟶ 483:
stack piles i x = do
j ← bsearch piles x i
writeArray piles j . (x:) =<< if j ≡ 1 then return []
else readArray piles (j-1)
return $ if j ≡ i+1 then i+1 else i