#P2104. K-th Number

    ID: 1105 传统题 1000ms 256MiB 尝试: 4 已通过: 1 难度: 10 上传者: 标签>数据结构树状数组Northeastern Europe 2004Northern Subregion、主席树、整体二分

K-th Number

描述

你正在Macrohard公司的数据结构部门工作。在上一个关于键插入的任务失败后,你被要求编写一个新的数据结构,能够快速返回数组区间中第kk小的数。

具体来说,给定一个由不同整数组成的数组a[1...n]a[1...n],你的程序需要回答一系列形式为Q(i,j,k)Q(i,j,k)的查询:“如果将a[i...j]a[i...j]区间排序,第kk个数是多少?”

例如,考虑数组a=(1,5,2,6,3,7,4)a=(1,5,2,6,3,7,4)。假设查询为Q(2,5,3)Q(2,5,3)。区间a[2...5]a[2...5](5,2,6,3)(5,2,6,3)。如果将其排序,得到(2,3,5,6)(2,3,5,6),第33个数是55,因此查询的答案是55

输入

输入的第一行包含两个整数nn(数组大小)和mm(需要回答的查询数量),其中1n1000001m50001≤n≤100000,1≤m≤5000

第二行包含nn个不同的整数,其绝对值不超过10910^ 9 ——表示需要处理的数组。

接下来的m行每行描述一个查询,包含三个数字iji、jk1ijn1kji+1k(1≤i≤j≤n,1≤k≤j−i+1),表示查询Q(i,j,k)Q(i,j,k)

输出

对于每个查询,输出其答案——排序后的a[i...j]a[i...j]区间中第kk个数。

输入数据 1

7 3
1 5 2 6 3 7 4
2 5 3
4 4 1
1 7 3

输出数据 1

5
6
3

来源

2004年欧洲东北部,北部子区域