编程题
### 问题描述 肖恩非常热爱数学。最近,他在学习数列的时候遇到了一个有趣的问题。问题是这样的:给定一个长度为 $n$ 的数列 $a[1...n]$ ,我们需要找出数列 $a$ 中每个长度大于等于 $k$ 的区间中的第 $k$ 大的数,并将这些第 $k$ 大的数组成一个新的数列 $b$ 。现在,小明想知道数列 $b$ 中第 $m$ 大的数是多少。 肖恩希望把这个问题交给你,请你帮肖恩找出数列 $b$ 中第 $m$ 大的数字。 ### 输入描述 第一行输入三个数字 $n,k,m$ ,三个数字的含义同题面所述。 第二行输入 $n$ 个数字,第 $i$ 个数字 $a_i$ 表示数组 $a$ 的第 $i$ 个元素。 数据保证 $1 \leq n \leq 10^5,1 \leq k \leq n,1 \leq m \leq |b|,1 \leq a_i \leq 10^9$ (其中 $|b|$ 表示 $b$ 数组的长度)。 ### 输出描述 输出一个数字表示数列 $b$ 中第 $m$ 大的数字。 ### 样例输入 ``` 4 3 3 1 2 3 4 ``` ### 样例输出 ``` 1 ``` ### 说明 我们考虑所有的长度大于 $3$ 的子区间, $a_1$ 到 $a_3$ 组成的子区间中第 $3$ 大的数字是 $1$ 。 $a_2$ 到 $a_4$ 组成的子区间中第 $3$ 大的数字是 $2$ 。 $a_1$ 到 $a_4$ 组成的子区间中第 $3$ 大的数字是 $2$ 。 所以得到的 $b$ 数组是 $1,2,2$ 。 $b$ 数组中第 $3$ 大的数字是 $1$ 。
查看答案
赣ICP备20007335号-2