가장 긴 증가하는 부분 수열 2

최대 1,000,000개의 수에서 엄격히 증가하는 가장 긴 부분 수열의 길이를 구합니다.

보통4이분 탐색동적 계획법면접 대비아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

수열 AA가 주어졌을 때, 가장 긴 증가하는 부분 수열의 길이를 구하는 프로그램을 작성하시오.

부분 수열은 AA에서 원소를 0개 이상 지우고 남은 원소를 원래 순서대로 이어 붙인 수열이다. 증가하는 부분 수열은 앞에 있는 원소가 바로 뒤에 있는 원소보다 항상 작은 부분 수열이다. 값이 같은 두 원소는 한 부분 수열에 나란히 놓을 수 없다.

예를 들어 A={10,20,10,30,20,50}A = \{10, 20, 10, 30, 20, 50\}이면 가장 긴 증가하는 부분 수열은 {10,20,30,50}\{10, 20, 30, 50\}이고 길이는 44이다.

입력

첫째 줄에 수열 AA의 크기 NN이 주어진다. (1N10000001 \le N \le 1\,000\,000)

둘째 줄에 수열 AA를 이루는 A1,A2,,ANA_1, A_2, \dots, A_N이 공백 하나로 구분되어 주어진다. (1Ai10000001 \le A_i \le 1\,000\,000)

출력

첫째 줄에 수열 AA의 가장 긴 증가하는 부분 수열의 길이를 출력한다.