QOJ.ac

QOJ

Límite de tiempo: 1 s Límite de memoria: 256 MB Puntuación total: 100

#2371. 最大或最小

Estadísticas

Kevin 有 $n$ 个整数 $a_1, a_2, \dots, a_n$ 排成一个圆圈。也就是说,数字 $a_i$ 和 $a_{i+1}$ ($1 \le i < n$) 是相邻的。数字 $a_1$ 和 $a_n$ 也是相邻的。因此,每个数字都有且仅有两个邻居。

在一分钟内,Kevin 可以将 $a_i$ 设置为它本身及其两个邻居这三个数中的最小值。或者,Kevin 也可以将 $a_i$ 设置为这三个数中的最大值。例如,如果 $a_i = 5$,且 $a_i$ 的两个邻居分别是 $3$ 和 $2$,那么 Kevin 执行最小值操作后,$a_i$ 将变为 $2$。然而,如果他执行最大值操作,$a_i$ 将保持为 $5$。

对于从 $1$ 到 $m$ 的每个 $x$,求出使所有数字都变为 $x$ 所需的最少分钟数,如果无法做到,则输出 $-1$。

输入格式

第一行包含两个整数 $n$ 和 $m$ ($3 \le n \le 2 \cdot 10^5$, $1 \le m \le 2 \cdot 10^5$),分别表示圆圈中整数的个数,以及需要求解的整数个数。

第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$ ($1 \le a_i \le m$),表示圆圈中的整数。

输出格式

输出 $m$ 个整数。第 $i$ 个整数表示使所有数字都变为 $i$ 所需的最少分钟数,如果无法做到,则输出 $-1$。

样例

输入 1

7 5
2 5 1 1 2 3 2

输出 1

5 5 7 -1 6

说明

要使所有数字都变为 $2$,Kevin 至少需要 $5$ 分钟。以下是一种可能的操作序列:

  1. 对 $a_6$ 执行最小值操作,它将变为 $2$。
  2. 对 $a_4$ 执行最大值操作,它将变为 $2$。
  3. 对 $a_3$ 执行最大值操作,它将变为 $5$。
  4. 对 $a_2$ 执行最小值操作,它将变为 $2$。
  5. 对 $a_3$ 执行最小值操作,它将变为 $2$。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.