QOJ.ac

QOJ

Limite de temps : 2 s Limite de mémoire : 256 MB Points totaux : 100 Difficulté: [afficher]

#330. 项链

Statistiques

Bytina 有 $n$ 颗互不相同的珠子,编号为 $1$ 到 $n$,每颗珠子都有一个已知的价值。 她想用其中的一些珠子制作一条项链,但很难决定选择哪些珠子以及如何排列它们。为了简化选择,她决定完全忽略珠子的排列,即仅当两串项链所包含的珠子集合不同时,才认为它们是不同的。为了让选择更简单,她现在想在所有可能的项链之间引入一种顺序。

珠子的总价值是 Bytina 最重要的衡量标准。因此,总价值越高,项链在顺序中出现得越靠后。然而,如果有几条项链的总价值相同,则应根据它们所包含珠子的价值序列(按升序排列)进行字典序排序$^*$。

例如,考虑一个有四颗珠子的场景,其价值(按珠子编号顺序)分别为 $3, 7, 4, 3$。由这些珠子可以制作出 $16$ 种不同的项链,按 Bytina 的顺序排列如下:

项链编号 所选珠子价值 所选珠子总价值 所选珠子编号
1 none 0 none
2 3 3 1
3 3 3 4
4 4 4 3
5 3 3 6 1 4
6 3 4 7 1 3
7 7 7 2
8 4 3 7 3 4
9 3 7 10 1 2
10 3 4 3 10 1 3 4
11 7 3 10 2 4
12 7 4 11 2 3
13 3 7 3 13 1 2 4
14 3 7 4 14 1 2 3
15 7 4 3 14 2 3 4
16 3 7 4 3 17 1 2 3 4

最后,Bytina 拿定了主意!她想要她顺序中的第 $k$ 条项链。请告诉她那是哪一条!

输入格式

标准输入的第一行包含两个正整数 $n$ 和 $k$,由空格分隔,分别指定珠子的数量和 Bytina 顺序中所需的项链编号。输入的第二行包含一个由 $n$ 个正整数组成的序列 $a_1, a_2, \dots, a_n$,由空格分隔,指定了各颗珠子的价值。

你可以假设 Bytina 没有出错,并且确实至少存在 $k$ 条不同的项链。

输出格式

标准输出的第一行应打印一个整数:所需项链中珠子的总价值。第二行应打印所选珠子价值的升序序列,并用空格分隔。

$^*$ 如果序列 $i_1, \dots, i_p$ 是序列 $j_1, \dots, j_q$ 的前缀(即 $p < q, i_1 = j_1, \dots, i_p = j_p$),或者在两个序列不同的第一个位置上,第一个序列的元素小于第二个序列的元素(即存在 $u \in \{1, \dots, \min(p, q)\}$ 使得 $i_1 = j_1, \dots, i_{u-1} = j_{u-1}$ 且 $i_u < j_u$),则称序列 $i_1, \dots, i_p$ 在字典序上小于序列 $j_1, \dots, j_q$。

样例

输入 1

4 10
3 7 4 3

输出 1

10
1 3 4

子任务

测试集由以下子任务组成。在每个子任务中,可能有多个测试组。 每个子任务满足条件 $n, k \le 1\,000\,000$ 且 $a_i \le 10^9$。

如果对某个测试的回答不正确,但输出的第一行(项链中珠子的总价值)是正确的,则该测试将获得一半的分数(如果超过了一半的时间限制,则会进行相应的缩放)。请注意,这不仅适用于第二行输出不正确的情况,也适用于没有输出第二行,甚至输出超过两行的情况。

子任务 属性 分数
1 $n \le 20, k \le 500\,000$ 8
2 $n \le 60, k \le 50\,000$ 12
3 $n \le 3\,000, n \cdot k \le 10^6, a_i \le 100$ 14
4 $n \cdot k \le 10^6$ 16
5 $n \cdot k \le 10^7$ 20
6 30

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.