CF1672I PermutationForces
题目描述
你有一个由 $1$ 到 $n$ 的整数构成的排列 $p$。
你拥有一个强度 $s$,并且你将多次执行以下操作:
- 选择一个下标 $i$,满足 $1 \leq i \leq |p|$ 且 $|i-p_i| \leq s$。
- 对所有满足 $1 \leq j \leq |p|$ 且 $p_i < p_j$ 的 $j$,将 $p_j$ 更新为 $p_j-1$。
- 删除排列中的第 $i$ 个元素。形式化地,将 $p$ 更新为 $[p_1,\ldots,p_{i-1},p_{i+1},\ldots,p_n]$。
可以证明,无论你选择了哪个 $i$,在所有操作结束后,$p$ 都会是一个从 $1$ 到 $|p|$ 的排列。
你希望能够将 $p$ 变为空排列。请你求出使其成为可能所需的最小强度 $s$。
输入格式
输入的第一行包含一个整数 $n$($1 \leq n \leq 5 \cdot 10^5$),表示排列 $p$ 的长度。
第二行包含 $n$ 个整数 $p_1, p_2, \ldots, p_n$($1 \leq p_i \leq n$),表示排列 $p$ 的元素。
保证 $p$ 中所有元素互不相同。
输出格式
输出所需的最小强度 $s$。
说明/提示
在第一个测试用例中,所需的最小 $s$ 是 $1$。
以下是当 $s=1$ 时将 $p$ 变为空排列的操作过程:
- 第一步,你只能选择 $i=2$,因为选择其他 $i$ 时 $|i-p_i| \leq s$ 不成立。此时 $p$ 变为 $[2,1]$。
- 第二步,你选择 $i=1$,此时 $p$ 变为 $[1]$。
- 第三步,你选择 $i=1$,此时 $p$ 变为 $[~]$。
可以证明,当 $s=0$ 时,不可能将 $p$ 变为空排列。
由 ChatGPT 4.1 翻译