Longest Increasing Subsequence: [10, 9, 2, 5, 3, 7, 101, 18]
============================================================

a[i]  [10, 9, 2, 5, 3, 7, 101, 18]
dp[i] [1, 1, 1, 2, 2, 3, 4, 4]   (dp[i] = longest increasing subsequence ENDING at index i)

answer = max(dp) = 4 (for example 2, 3, 7, 18)
O(n log n) patience version = 4
