만드는 중입니다

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

목걸이

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

요약
구슬 n개의 값이 주어졌을 때, 총합이 작은 순서이고 합이 같으면 구슬 번호의 사전순으로 정렬한 부분집합 중 k번째를 찾습니다.
난이도

어려움10점 중 8점

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

문제

바이트나에게는 1번부터 nn번까지 번호가 붙은 구슬 nn개가 있다. 구슬은 모두 서로 다르고, 구슬마다 가치가 정해져 있다. 가치는 바이트알라 단위로 주어진다.

바이트나는 이 구슬 중 일부로 목걸이를 만들려고 한다. 목걸이를 만드는 방법은 여러 가지이며, 사용한 구슬의 집합이 다르면 서로 다른 방법으로 본다. 바이트나는 모든 방법을 다음 기준으로 정렬한다.

  1. 구슬 가치의 합이 작은 방법이 앞에 온다.
  2. 가치의 합이 같으면, 사용한 구슬 번호를 오름차순으로 정렬한 목록을 사전순으로 비교한다.∗

예를 들어 가치가 순서대로 3, 7, 4, 3인 구슬 4개가 있다고 하자. 이때 목걸이는 16가지 방법으로 만들 수 있다. 아래 표는 바이트나의 기준으로 정렬한 결과이다.

방법 번호선택한 구슬의 가치가치의 합구슬 번호
1없음0없음
2331
3334
4443
53 361 4
63 471 3
7772
84 373 4
93 7101 2
103 4 3101 3 4
117 3102 4
127 4112 3
133 7 3131 2 4
143 7 4141 2 3
157 4 3142 3 4
163 7 4 3171 2 3 4

바이트나는 이 순서에서 kk번째에 있는 목걸이를 원한다. 그 목걸이를 찾아라.

∗ 두 수열 i1,...,ipi_1, ..., i_p와 j1,...,jqj_1, ..., j_q에서 첫 번째 수열이 사전순으로 앞서는 경우는 두 가지이다. 첫 번째 수열이 두 번째 수열의 앞부분이고 p<qp < q인 경우(i1=j1,...,ip=jpi_1 = j_1, ..., i_p = j_p), 또는 처음으로 달라지는 위치 uu에서 iu<jui_u < j_u인 경우(i1=j1,...,iu−1=ju−1i_1 = j_1, ..., i_{u-1} = j_{u-1})이다.

입력

첫 줄에 양의 정수 nn과 kk가 공백 하나로 구분되어 주어진다. nn은 구슬의 개수이고, kk는 위의 순서에서 찾을 방법의 번호이다.

둘째 줄에 양의 정수 a1,a2,...,ana_1, a_2, ..., a_n이 공백으로 구분되어 주어진다. aia_i는 ii번 구슬의 가치이다.

바이트나가 실수하지 않았으므로, 서로 다른 목걸이를 만드는 방법은 적어도 kk가지 존재한다.

출력

첫 줄에 찾은 목걸이에 쓰인 구슬 가치의 합을 출력한다.

둘째 줄에 목걸이에 사용된 구슬 번호를 오름차순으로 공백으로 구분하여 출력한다.

제한

  • n,k≤106n, k \le 10^6
  • ai≤109a_i \le 10^9

예제1

  1. 예제 1

    입력
    4 10
    3 7 4 3
    
    예상 출력
    10
    1 3 4