P16335 [DSDOI Round 1] 邓少打音游
题目背景
最近邓少迷上了一款七个字母的音游。但是邓少的底力不太好,打不动交互,于是他来向你请教。
题目描述
定义一个长度至少为 $3$ 的数组 $a$ 是一个**交互**,当且仅当以下条件成立:
> 对于所有满足 $1 a_i < a_{i+1}$ 成立。(其中 $\operatorname{len}(a)$ 表示数组 $a$ 的长度)
例如数组 $A = \{1,2,1,3,1,4,1\}$ 是一个交互,而数组 $B = \{1,2,2,2\}$ 不是一个交互。
现在,邓少有一个长为 $n$ 的数组 $s$,他需要你进行以下三种操作或询问:
1. `1 l r x`,表示将 $s_l,s_{l+1},\dots,s_r$ 分别加上 $x$。
2. `2 k`,询问能满足:
> $k\in[l,r]$,且子数组 $\{s_l,s_{l+1},\dots,s_r\}$ 是一个交互。
这一条件的最长的区间 $[l,r]$。
3. `3 l r`,询问子数组 $\{s_l,s_{l+1},\dots,s_r\}$ 是不是交互。
输入格式
第一行包含两个正整数 $n,q$,表示 $s$ 的长度以及操作个数。
接下来一行包含 $n$ 个整数,表示数组 $s$。
接下来 $q$ 行,每行包含多个整数,表示一次操作,格式如上所述。
输出格式
对于每次询问输出一行,代表答案。
对于询问 $2$:
- 若满足要求的区间**不存在**,则输出 `-1`。
- 若存在**恰好一个**满足要求的区间,则输出两个正整数 $l,r$,表示这个区间。
- 若存在**多个**满足要求的区间,则输出两个正整数 $l,r$,表示这些区间中,左端点最小的那个区间。
对于询问 $3$:如果询问的区间是一个交互,输出 `Yes`,否则输出 `No`。
说明/提示
### 【数据范围】
对于所有测试数据,保证:
- $1 \le n,q \le 2 \times 10^5$;
- $-10^9 \le s_i \le 10^9$;
- 对于操作 $1$,保证:$1 \le l \le r \le n$,$\vert x\vert \le 10^9$;
- 对于询问 $2$,保证 $1\le k\le n$;
- 对于询问 $3$,保证 $1 \le l \le r \le n$。
| 测试点编号 | $n,q \le$ | $\vert s_i\vert,\vert x\vert \le$ | 特殊性质 |
| :-: | :-: | :-: | :-: |
| $1 \sim 2$ | $500$ | $10^9$ | $-$ |
| $3 \sim 4$ | $2000$ | ^ | ^ |
| $5 \sim 7$ | $10^5$ | ^ | ^ |
| $8$ | $2 \times 10^5$ | ^ | $A$ |
| $9$ | ^ | ^ | $B$ |
| $10$ | ^ | $1$ | $C$ |
| $11 \sim 20$ | ^ | $10^9$ | $-$ |
- 特殊性质 $A$:保证没有修改操作。
- 特殊性质 $B$:保证对于所有修改操作,有 $l=r$。
- 特殊性质 $C$:保证每次修改后,有 $s_i\in[0,1]$。