#P5797. [SEERC2019] Max or Min
[SEERC2019] Max or Min
题目描述
Kevin 有 个整数 ,它们按环形排列。对于环上的数字,数字 和 是相邻的,且数字 和 是相邻的。因此,每个数字有恰好两个相邻的数字。
在 分钟内,Kevin 可以将 修改为这 个数字中的最小值或最大值: 以及它的两个相邻数字。例如,如果 且 的两个相邻数字为 和 ,Kevin 修改 为最小值后, 会变为 ;如果 Kevin 修改 为最大值, 仍是 。
对于从 到 的每个整数 ,计算出让上述环上的数字都变为 的最短时间。
输入格式
第一行包含两个整数 和 $m \ (3 \leq n \leq 2 \cdot 10^5, 1 \leq m \leq 2 \cdot 10^5)$,代表环上的数字个数和需要计算答案的 的范围。
第二行包含 个整数 ,代表环上的数字。
输出格式
输出 个整数。第 个整数为将环上的所有数字变为 的最短时间的分钟数,如果无论如何都无法将环上的所有整数变为 ,则第 个整数应输出 。
7 5
2 5 1 1 2 3 2
5 5 7 -1 6
提示
要让环上的所有整数都变为 ,Kevin 需要至少 分钟。一种可行的修改方案为:
- 将 修改为它与相邻数字中的最小值,即修改为 ;
- 将 修改为它与相邻数字中的最大值,即修改为 ;
- 将 修改为它与相邻数字中的最大值,即修改为 ;
- 将 修改为它与相邻数字中的最小值,即修改为 ;
- 将 修改为它与相邻数字中的最小值,即修改为 。