#L0393. 排列子串的字典序查询
排列子串的字典序查询
题目描述
你有一个数列 ,其中 各出现了一次(即 是一个排列)。
当你任意选一对 ,并将 排成一行,你就得到了 的一个子串,记为 ,称 为左端点, 为右端点。
你需要把 的所有子串按字典序从小到大排序。为了避免输出量过大,题目给出 个询问,每次给出一个 ,求字典序第 小的子串的左右端点。
如果你不知道什么是字典序,看这里:
对于两个数列 ,称 的字典序小于 (记为 ),当且仅当存在自然数 使 的前 个数相同且 。
特别地,若 是 的前缀且 ,也认为 的字典序小于 。
例如:
- (当 )
- (当 )
- ( 是 前缀)
输入格式
输入的第一行有两个正整数 表示序列长度和询问个数。
第二行有 个正整数 ,表示这个数列。
之后有 行,每行有一个正整数 ,表示要求的子串的排名。
输出格式
对于每个问题,输出一行两个整数 ,表示字典序第 小的子串是 。
样例
3 6
3 1 2
1
2
3
4
5
62 2
2 3
3 3
1 1
1 2
1 3
</p>
50 25
42 22 27 8 44 11 14 31 37 10 48 15 12 40 13 4 25 9 19 5 2 18 6 1 32 3 38 33 43 34 46 47 23 35 21 20 45 39 50 7 36 17 24 29 16 30 49 26 28 41
1178
991
755
1094
689
132
671
635
421
659
448
334
327
213
1206
453
1160
583
388
781
150
692
23
1162
6237 48
27 44
3 28
1 46
43 47
20 34
33 37
2 19
15 44
2 43
7 27
6 31
6 24
4 29
32 37
7 32
5 44
19 47
13 47
44 45
23 24
43 50
24 46
5 46
26 30
</p>
提示
【样例解释 #1】
数列 共有 个子串,从小到大排序的结果为:。
【数据范围】
对于全体数据,保证 ,, 中 各有一个,输入皆为整数。
难度
普及
通过率
—
尝试
0
已通过
0
- ID
- 1121
- 类型
- 传统题
- Time Limit
- 1000ms
- Memory Limit
- 512MiB
- 上传者