Partition into increasing subsequences
Haskell, 54 bytes

n#[]=[[n]]
n#(l:c)|[n]&lt;=l=(n:l):c|1&lt;2=l:n#c
foldr(#)[]


Usage example: foldr(#)[] [4,12,2,10,15,2,2,19,16,12]-> [[2,2,2,12],[4,10,15,16],[12,19]]

How it works: go through the input list starting at the right end. Build the output list (of lists) by prepending the current element n to first sublist l where n is less or equal to the head of l. If there's none, make a new singleton list of n at the end of the output list.