아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

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

시간 제한0.25초메모리 제한512 MB

요약
서로 다른 수로 이루어진 수열에서 모든 최장 증가 부분 수열을 인덱스 기준 사전순으로 정렬했을 때 K번째를 구하고, K개가 없으면 -1을 출력한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 그리디, 조합론, 이분 탐색
정답자
아직 제출이 없습니다

문제

N개의 정수로 이루어진 수열 A1,A2,…,ANA_1, A_2, \dots, A_N에서 가장 긴 증가하는 부분 수열(LIS)의 길이를 LL이라고 하자. LIS는 하나 이상 있을 수 있다. 모든 LIS를 사전 순으로 정렬했을 때, K번째 오는 수열을 구하자.

두 LIS Ai1,Ai2,…,AiLA_{i_1}, A_{i_2}, \dots, A_{i_L}와 Aj1,Aj2,…,AjLA_{j_1}, A_{j_2}, \dots, A_{j_L}가 있을 때, ik≠jki_k \ne j_k를 만족하는 kk가 하나라도 존재하면 다른 LIS이다.

입력

첫째 줄에 N과 K가 주어진다. 둘째 줄에 공백으로 구분된 A1,A2,…,ANA_1, A_2, \dots, A_N이 주어진다.

출력

K번째 LIS를 공백으로 구분해서 출력한다. K번째 LIS가 없을 때는 -1을 출력한다.

제한

  • 1≤N≤5001 \le N \le 500
  • 1≤K≤1091 \le K \le 10^9
  • 1≤Ai≤N1 \le A_i \le N
  • 수열 A에는 중복되는 수가 없다.

예제5

  1. 예제 1

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

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

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

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

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