给你一个数列，请使用贪心算法找出其中最长的单调递增子序列。输出应该包括最长递增子序列的长度和序列本身。


一个包含任意数量数字的数列，可以是任意大小和结构的数列。
使用贪心算法可以得到一个时间复杂度为O(n*log(n))的最长递增子序列解法。具体方法是维护一个当前最长递增子序列，然后遍历整个数列，对于每个数，如果它大于当前最长递增子序列的最后一个数，则将它加入最长递增子序列，否则用它来替换最长递增子序列上第一个大于等于它的数，这样保证减小替换次数，最后最长递增子序列的长度即为所求，如下所示：

def longest_increasing_subsequence(nums):
    n = len(nums)
    if n == 0:
        return 0, []
    dp = [nums[0]]
    result = [nums[0]]
    for i in range(1, n):
        if nums[i] > dp[-1]:
            dp.append(nums[i])
            result.append(nums[i])
        else:
            l, r = 0, len(dp) - 1
            while l < r:
                mid = int((l + r) / 2)
                if dp[mid] >= nums[i]:
                    r = mid
                else:
                    l = mid + 1
            dp[l] = nums[i]
            result[l] = nums[i]
    return len(dp), result

其中dp是长度为i的最长递增子序列的结尾最小为多少，而result则是可以得到的最长递增子序列。