RosettaCodeData/Task/Longest-increasing-subsequence/Icon/longest-increasing-subseque...

12 lines
256 B
Plaintext

procedure main(A)
every writes((!lis(A)||" ") | "\n")
end
procedure lis(A)
r := [A[1]] | fail
every (put(pt := [], [v := !A]), p := !pt) do
if put(p, p[-1] < v) then r := (*p > *r, p)
else p[-1] := (p[-2] < v)
return r
end