MKTHNUM - K-th Number

题意翻译

题目大意: 给你 $n$ 个数,多次询问某段区间中第 $k$ 小的数。 输入格式: 第一行有两个整数 $n,m$,分别为整数个数、询问次数。 第二行有 $n$ 个整数,其中第 $i$ 个为 $a_i$。 接下来 $m$ 行,每行三个整数 $i,j,k$,询问第 $i$ 个数到第 $j$ 个数中第 $k$ 小的数。 输出格式: 输出共 $m$ 行,为对每次询问的回答。 数据范围: $1\le n \le 100000$ , $1 \le m \le 5000$ , $-10^9 \le a_i \le 10^9$。 ~~注意:简单的做法可是过不了的。~~ 感谢 @gjc1124646822 提供的翻译。 Fixed by @AnEasySong

题目描述

[English](/problems/MKTHNUM/en/) [Vietnamese](/problems/MKTHNUM/vn/) You are working for Macrohard company in data structures department. After failing your previous task about key insertion you were asked to write a new data structure that would be able to return quickly k-th order statistics in the array segment. That is, given an array a\[1 ... n\] of different integer numbers, your program must answer a series of questions Q(i, j, k) in the form: "What would be the k-th number in a\[i ... j\] segment, if this segment was sorted?" For example, consider the array a = (1, 5, 2, 6, 3, 7, 4). Let the question be Q(2, 5, 3). The segment a\[2 ... 5\] is (5, 2, 6, 3). If we sort this segment, we get (2, 3, 5, 6), the third number is 5, and therefore the answer to the question is 5.

输入输出格式

输入格式


The first line of the input contains n — the size of the array, and m — the number of questions to answer (1 ≤ n ≤ 100000, 1 ≤ m ≤ 5000). The second line contains n different integer numbers not exceeding 10^9 by their absolute values — the array for which the answers should be given. The following m lines contain question descriptions, each description consists of three numbers: i, j, and k (1 ≤ i ≤ j ≤ n, 1 ≤ k ≤ j - i + 1) and represents the question Q(i, j, k). ``` SAMPLE INPUT 7 3 1 5 2 6 3 7 4 2 5 3 4 4 1 1 7 3 ```

输出格式


``` For each question output the answer to it — the k-th number in sorted a[i ... j] segment. SAMPLE OUTPUT 5 6 3 ``` **Note : naive solution will not work!!!**

输入输出样例

暂无测试点