#HK4904. 「POI2016 R1」项链 Necklace

「POI2016 R1」项链 Necklace

题目描述

题目译自 XXIII Olimpiada Informatyczna — I etap Korale

Bajtyna 有 nn 颗编号从 11nn 的珠子,每颗都不相同,且各有其价值(以字节币计价)。她想用这些珠子制作一条项链,但可选的组合方式有很多。若两条项链使用的珠子集合不同,就算不同。为了方便选择,Bajtyna 决定给所有可能的项链组合排序。

排序的首要标准是项链中珠子的总价值,总价值越大,排名越靠后。若两个组合的总价值相同,则按珠子编号升序排列后的列表进行字典序比较*。

例如,假设有四颗珠子,价值依次为(按编号)3,7,4,33,7,4,3 字节币,可组成 1616 种项链。以下是按 Bajtyna 规则排序的组合:

组合编号 选用珠子价值 总价值 选用珠子编号
11 00
22 33 33 11
33 33 33 44
44 44 44 33
55 3 33\ 3 66 1 41\ 4
66 3 43\ 4 77 1 31\ 3
77 77 77 22
88 4 34\ 3 77 3 43\ 4
99 3 73\ 7 1010 1 21\ 2
1010 3 4 33\ 4\ 3 1010 1 3 41\ 3\ 4
1111 7 37\ 3 1010 2 42\ 4
1212 7 47\ 4 1111 2 32\ 3
1313 3 7 33\ 7\ 3 1313 1 2 41\ 2\ 4
1414 3 7 43\ 7\ 4 1414 1 2 31\ 2\ 3
1515 7 4 37\ 4\ 3 1414 2 3 42\ 3\ 4
1616 3 7 4 33\ 7\ 4\ 3 1717 1 2 3 41\ 2\ 3\ 4

字节娜想知道第 kk 个组合的项链是怎样的。请你帮她设计!

输入格式

输入第一行包含两个正整数 nnkk,分别表示珠子数量和目标组合的排名。

第二行包含 nn 个正整数 a1,a2,,ana_{1}, a_{2}, \ldots, a_{n},表示各珠子的价值。

保证存在至少 kk 种不同的项链组合。

输出格式

第一行输出一个整数,表示目标组合中珠子的总价值。

第二行输出目标项链使用的珠子编号,按升序排列,数字间用空格分隔。若 k=1k=1,第一行输出 00,第二行留空。

4 10
3 7 4 3

10
1 3 4

附加样例

  1. n=10n=10,所有珠子价值为 11
  2. n=9n=9,珠子价值为 22 的连续幂次;
  3. n=11n=11,一个珠子价值 11,十个价值 10910^{9},答案使用全部 1111 颗珠子;
  4. n=1000000,k=10n=1000000, k=10,珠子价值依次为 1 到 1000000。

数据范围与提示

所有子任务满足 n,k1000000n, k \leq 1000000ai109a_{i} \leq 10^{9}

若第一行(总价值)正确但第二行错误,可获该测试点一半分数(即使第二行缺失或多输出)。

详细子任务附加限制及分值如下表所示。

子任务 附加限制 分值
11 n20,k500000n \leq 20, k \leq 500000 88
22 n60,k50000n \leq 60, k \leq 50000 1212
33 n3000,nk106,ai100n \leq 3000, n \cdot k \leq 10^{6}, a_{i} \leq 100 1414
44 nk106n \cdot k \leq 10^{6} 1616
55 nk107n \cdot k \leq 10^{7} 2020
66 无附加限制 3030