#P1173. 排序问题

排序问题

题目描述

现在给一个长度为n的序列。显然,所有不同的连续子序列共有n(n+1)2\frac{n(n+1)}{2}个。将这些子序列进行从大到小进行排序。

下面定义子序列A和B的比较方法:

考虑所有在A和B中出现过的元素x,将他们从小到大排列。接着从小到大考虑元素x:若对于元素x,在A中出现的次数和B中出现的次数不同,定义其中出现次数较多的序列更大。

例如:

  • 对于序列[1, 2, 3]和[1, 3, 1],有[1, 2, 3] < [1, 3, 1],因为后者中1出现了两次。
  • 对于序列[1, 2, 3]和[1, 3],有[1, 2, 3] > [1, 3],因为前者中2出现了1次,后者0次。

我们将询问这些序列中排序完成后位于第k位的序列形态。换句话说查询从大到小第k大的序列形态。

输入格式

第一行两个整数n,kn, k,表示序列长度为nn,查询的是第kk大的序列。

接下来一行nn个整数,依次表示这个序列中的元素SiS_i

输出格式

一行,从前到后依次打印这个序列的形态。为了保证这个答案是唯一的,你需要将截取的序列排序后输出。

3 2
1 3 2
1 3
6 11
1 1 4 5 1 4
1 4 5

样例解释

样例解释 1

所有选出的序列从大到小排列后是 [1, 2, 3], [1, 3], [1], [2, 3], [2], [3]

所求的第二大序列为[1, 3]

数据规模与约定

每组数据点5分,共20组数据。

对于所有数据,满足1Sin105,1kn(n+1)/21 \le S_i \le n \le 10^5, 1 \le k \le n(n + 1) / 2

测试点编号 其他说明
#1 ~ #8 1n1001\le n \le 100
#9 ~ #12 1n10001\le n \le 1000
#13 ~ #14 1n30000,1k1001\le n \le 30000, 1 \le k \le 100
#15 ~ #16 1n30000,1Si201 \le n \le 30000, 1 \le S_i \le 20
#17~#19 1n300001 \le n \le 30000
#20

大样例

大样例下载