luogu#P5797. [SEERC2019] Max or Min

[SEERC2019] Max or Min

题目描述

Kevin 有 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n ,它们按环形排列。对于环上的数字,数字 aia_iai+1 (1i<n)a_{i+1} \ (1 \leq i < n) 是相邻的,且数字 a1a_1ana_n 是相邻的。因此,每个数字有恰好两个相邻的数字。

11 分钟内,Kevin 可以将 aia_i 修改为这 33 个数字中的最小值或最大值:aia_i 以及它的两个相邻数字。例如,如果 ai=5a_i=5aia_i 的两个相邻数字为 3322,Kevin 修改 aia_i 为最小值后,aia_i 会变为 22;如果 Kevin 修改 aia_i 为最大值,aia_i 仍是 55

对于从 11mm 的每个整数 xx,计算出让上述环上的数字都变为 xx 的最短时间。

输入格式

第一行包含两个整数 nn 和 $m \ (3 \leq n \leq 2 \cdot 10^5, 1 \leq m \leq 2 \cdot 10^5)$,代表环上的数字个数和需要计算答案的 xx 的范围。

第二行包含 nn 个整数 a1,a2,,an (1aim)a_1, a_2, \dots, a_n \ (1 \leq a_i \leq m),代表环上的数字。

输出格式

输出 mm 个整数。第 ii 个整数为将环上的所有数字变为 ii 的最短时间的分钟数,如果无论如何都无法将环上的所有整数变为 ii,则第 ii 个整数应输出 1-1

7 5
2 5 1 1 2 3 2
5 5 7 -1 6

提示

要让环上的所有整数都变为 22,Kevin 需要至少 55 分钟。一种可行的修改方案为:

  1. a6a_6 修改为它与相邻数字中的最小值,即修改为 22
  2. a4a_4 修改为它与相邻数字中的最大值,即修改为 22
  3. a3a_3 修改为它与相邻数字中的最大值,即修改为 55
  4. a2a_2 修改为它与相邻数字中的最小值,即修改为 22
  5. a3a_3 修改为它与相邻数字中的最小值,即修改为 22