SP8429 BTCODE_K - Array Sorting
题目描述
Sumit 是一位专注于排序算法的高手,而 Abhishek 想要测试 Sumit 的编程能力。现在给你一个包含 $n$ 个数的数组 $a[0], a[1], a[2], \ldots, a[n-1]$。Abhishek 会提供一系列指令,格式为 "v i j"。每条指令可能是一条查询或更新操作(v 等于 0 表示查询,否则表示更新)。
对于形式为 "0 i j" 的指令,Sumit 需要输出以下结果:
- 如果子数组 $a[i], a[i+1], \ldots, a[j]$ 未排序,输出 0。
- 如果子数组按非降序排列(即从小到大且允许相等),输出 1。
- 如果子数组按非升序排列(即从大到小且允许相等),输出 2。
- 如果所有元素相等(即既是非降序又是非升序),输出 3。
而对于其他形式 "v i j" 的指令(v 不等于 0),则表示更新操作:
- 依次对子数组中的每个元素 $a[k]$,将其替换为 $v - a[k]$。
Sumit 感到很疲惫,不想自己写程序。你能帮助 Sumit 实现一个程序来响应 Abhishek 的指令吗?
输入格式
第一行输入两个用空格分开的整数 $n$ 和 $q$。第二行输入 $n$ 个整数,表示数组 $a$:$a[0], a[1], \ldots, a[n-1]$。接下来的 $q$ 行,每行包含三个整数 $v, i, j$,分别表示一条指令。
输出格式
对于每个查询指令,输出一个整数:0, 1, 2 或 3,表示对应的结果。
**本翻译由 AI 自动生成**