#loj5717. 「BalticOI 2026」排序

    ID: 12559 传统题 1000ms 700MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>BalticOI2026树状数组可持久化线段树双指针 two-pointer省选/NOI−

「BalticOI 2026」排序

#5717. 「BalticOI 2026」排序

标签: 传统 | 时间限制: 1000 ms | 内存限制: 512 MiB |

题目描述

题目译自 BalticOI 2026 Day2「Sort

给定一个包含 nn 个整数的数组 x1,x2,,xnx_{1}, x_{2}, \ldots, x_{n}。你需要回答 qq 个询问 (a,b)(a, b)。在每次操作中,你可以选择以下两种操作之一:

  • 将前 aa 个数字按非递减顺序排序;
  • 将最后 bb 个数字按非递减顺序排序。

请问将整个数组按非递减顺序排序所需的最少操作次数是多少?对于每个询问,数组都从初始值 x1,x2,,xnx_{1}, x_{2}, \ldots, x_{n} 开始。

输入格式

第一行包含两个整数 nnqq,表示数组的长度和询问次数。

第二行包含 nn 个整数 x1,x2,,xnx_{1}, x_{2}, \ldots, x_{n},表示数组的初始内容。

接下来的 qq 行描述询问,每行包含两个整数 aabb

输出格式

输出 qq 行,对应每个询问的答案。如果无法将数组排序,则输出 1-1

样例

输入

6 3
3 1 4 1 5 9
4 1
3 3
2 5

输出

1
-1
2

在第一个询问中,可以通过对前 44 个数字进行一次排序,从而将数组排序。

在第二个询问中,无法通过可用的操作将数组排序。

在第三个询问中,可以通过两次操作将数组排序:首先对前 22 个数字进行排序,然后对最后 55 个数字进行排序。

数据范围与提示

对于所有输入数据,满足:

  • 1n,q21051 \leq n, q \leq 2 \cdot 10^{5}
  • 1xi1091 \leq x_{i} \leq 10^{9}
  • 在所有询问中,1a,bn1 \leq a, b \leq n

详细子任务附加限制及分值如下表所示。

子任务 附加限制 分值
11 n,q10n, q \leq 10 且在所有询问中 a+bna+b \leq n 66
22 n,q10n, q \leq 10 55
33 在所有询问中 a+bna+b \leq n 77
44 1xi21 \leq x_{i} \leq 2 1414
55 n,q5000n, q \leq 5000 且数组是 1,2,,n1, 2, \ldots, n 的一个排列 2323
66 n,q5000n, q \leq 5000 1212
77 无附加限制 3333