만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

수열과 쿼리 44

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

요약
각 질의 m k마다 A_1부터 A_m까지의 수열에서 가장 긴 증가 부분 수열의 길이가 k 이하인 부분 수열의 최대 길이를 구합니다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 동적 계획법
정답자
아직 제출이 없습니다

문제

길이가 NN인 수열 A1,A2,…,ANA_1, A_2, \ldots, A_N이 주어진다. 다음 쿼리를 처리하는 프로그램을 작성하시오.

  • m k: A1,A2,…,AmA_1, A_2, \ldots, A_m의 부분수열 중 최장 증가 부분수열의 길이가 kk 이하인 것들의 최대 길이를 출력한다. (1≤k≤m≤N1 \le k \le m \le N)

입력

첫째 줄에 수열의 크기 NN과 쿼리의 개수 QQ가 주어진다. (1≤N≤500001 \le N \le 50000, 1≤Q≤2000001 \le Q \le 200000)

둘째 줄에 A1,A2,…,ANA_1, A_2, \ldots, A_N이 주어진다. (1≤Ai≤500001 \le A_i \le 50000)

이후 QQ개의 줄에 위에서 설명한 형식의 쿼리가 주어진다.

출력

각 쿼리의 정답을 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    11 6
    9 6 3 1 5 12 8 4 2 2 2
    5 1
    7 2
    9 1
    9 2
    11 1
    11 11
    
    예상 출력
    4
    6
    5
    8
    7
    11