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

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

하강 수열

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

요약
수열과 고정된 길이 p가 주어질 때, 감소하는 인덱스 수열 중 사전순으로 k번째인 것을 각 질의마다 구한다.
난이도

어려움10점 중 8점

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

문제

정수 수열 a1,a2,…,ana_1, a_2, \ldots, a_n 이 주어진다. 인덱스들이 순증가하는 수열 c1,c2,…,cpc_1, c_2, \ldots, c_p (1≤ci≤n1 \le c_i \le n) 이 그 위치의 값들이 순감소할 때, 즉 ac1>ac2>⋯>acpa_{c_1} > a_{c_2} > \cdots > a_{c_p} 일 때 이 인덱스 수열을 하강 수열이라고 부른다.

인덱스 수열 c1,c2,…,cpc_1, c_2, \ldots, c_p 가 인덱스 수열 d1,d2,…,dpd_1, d_2, \ldots, d_p 보다 사전순으로 앞선다는 것은, 어떤 위치 k∈[1,p]k \in [1, p] 가 존재하여 모든 i∈[1,k−1]i \in [1, k-1] 에 대해 ci=dic_i = d_i 이고 ck<dkc_k < d_k 인 경우를 뜻한다.

다음 형태의 질의에 답하라: 사전순으로 kk번째로 작은 하강 인덱스 수열을 찾아라. 고려하는 모든 하강 수열의 길이는 정확히 pp 이다.

입력

첫째 줄에 세 정수 nn, pp, qq (1≤n,q≤100 0001 \le n, q \le 100\,000, 1≤p≤101 \le p \le 10) 가 주어진다. 각각 수열의 길이, 고려할 하강 수열의 길이, 질의의 개수를 뜻한다. 둘째 줄에 nn개의 정수 aia_i (−109≤ai≤109-10^9 \le a_i \le 10^9) 가 주어진다. 이어지는 qq개의 줄에는 각각 정수 kjk_j (1≤kj≤10181 \le k_j \le 10^{18}) 가 하나씩 주어진다.

출력

qq개의 줄을 출력한다. jj번째 줄에는 kjk_j번째로 작은 하강 인덱스 수열을, pp개의 인덱스 값을 한 칸의 공백으로 구분하여 출력한다. 그러한 하강 수열이 존재하지 않으면 그 줄에 −1-1 하나만 출력한다.

참고

첫 번째 예제(n=5n=5, 수열 −1 6 5 2 1-1\ 6\ 5\ 2\ 1)에서 길이가 33인 하강 인덱스 수열을 사전순으로 나열하면 (2,3,4)(2, 3, 4), (2,3,5)(2, 3, 5), (2,4,5)(2, 4, 5), (3,4,5)(3, 4, 5) 이다.

예제2

  1. 예제 1

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

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