오름세

시간 제한1초메모리 제한128 MB

요약
각 테스트 케이스마다 최대 10만 개의 주가 수열에서 가장 긴 엄격 증가 부분수열의 길이를 구하는 문제입니다.
난이도

보통10점 중 4점

유형
동적 계획법, 이분 탐색, 배열
정답자
아직 제출이 없습니다

문제

주식 투자를 좋아하는 정인이는 주가의 오름세를 살펴보려고 한다.

정인이는 nn일 동안 매일 주가를 적어 두었고, 여기에서 오름세를 찾아보려고 한다.

nn일 동안의 주가를 p1,p2,…,pnp_1, p_2, \ldots, p_n이라고 하자. 오름세란 인덱스가 i1<i2<⋯<iki_1 < i_2 < \cdots < i_k이면서 pi1<pi2<⋯<pikp_{i_1} < p_{i_2} < \cdots < p_{i_k}를 만족하는 부분수열, 즉 주가의 강한 증가 부분수열을 말한다.

nn일 동안의 주가가 주어졌을 때, 가장 긴 오름세를 찾는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있으며, 입력의 끝까지 처리한다. 각 테스트 케이스의 첫째 줄에는 주가를 관찰한 날의 수 NN이 주어진다(N≤100000N \le 100000). 둘째 줄에는 관찰한 주가가 첫날부터 순서대로 주어진다. 주가는 한 개 이상의 공백으로 구분되며, 그 외의 위치에서도 공백이 자유롭게 나올 수 있다. 각 주가는 100{,}000보다 작거나 같은 자연수이다.

출력

각 테스트 케이스에 대해, 입력으로 주어진 주가에서 가장 긴 오름세의 길이를 출력한다.

예제3

  1. 예제 1

    입력
    6
    5 2 1 4 5 3
    3
    1 1 1
    4
    4 3 2 1
    
    예상 출력
    3
    1
    1
    
  2. 예제 2

    입력
    7
    1 2 3 4 5 6 7
    
    예상 출력
    7
    
  3. 예제 3

    입력
    5
    7 7 7 7 7
    
    예상 출력
    1