题目描述
给定一个由 1 到 N 组成的排列 a1,a2,…,aN。
如果存在一组下标 j1<j2<⋯<jM,使得对应元素 aj1,aj2,…,ajM 经过重新排列后 可以成为一段连续整数,那么称这组下标构成一个特殊子序列。更形式化地说,存在一种重新排列方式,使得:
ajk1+1=ajk2
ajk2+1=ajk3
⋯
ajkM−1+1=ajkM
你需要回答 Q 个询问 (li,ri)。对于每个询问,求:
- 在下标区间 [li,ri] 对应的子数组中,最长特殊子序列的长度是多少?
更准确地说,我们要求最大的 M,使得存在一个特殊子序列满足:
li≤j1<j2<⋯<jM≤ri
输入格式
第一行包含两个整数 N,Q,分别表示数字个数和询问个数。
第二行包含 N 个整数,表示排列 a1,a2,…,aN。
接下来 Q 行,每行包含两个整数 li,ri。
输出格式
对于每个询问,输出一行一个整数,表示所求特殊子序列的最大长度。
数据范围
- 1≤N,Q≤2×105
- 1≤ai≤N
- 1≤li≤ri≤N
子任务
| 子任务 |
分值 |
N,Q |
额外限制 |
| 1 |
3 |
≤2×103 |
无 |
| 2 |
5 |
≤1.5×104 |
| 3 |
13 |
≤2×105 |
ri−li+1≤103 |
| 4 |
28 |
≤5×104 |
无 |
| 5 |
25 |
≤105 |
| 6 |
26 |
≤2×105 |
通过某个子任务的全部测试后,才能获得该子任务的分数。
样例
输入
4 2
2 4 1 3
1 4
2 4
输出
4
2
样例解释
第一个询问包含了所有数字,它们显然可以重排成 1,2,3,4。
第二个询问包含数字 4,1,3。我们能选择的最长特殊子序列由数字 4 和 3 组成,它们可以重排成 3,4。