题目描述
给定一个 (1,2,…,N) 的排列 P=(P1,P2,…,PN)。
对于所有 i (1≤i≤N),请计算以下的值:
- $D\_i = \displaystyle\min\_{j\neq i}\left( |P\_i - P\_j| + |i - j| \right)$
排列是指将 (1,2,…,N) 重新排列得到的数列。也就是说,长度为 N 的数列 A,当且仅当 i (1≤i≤N) 在其中恰好出现一次时,A 是 (1,2,…,N) 的一个排列。
输入格式
输入以以下格式从标准输入读入。
N P1 P2 … PN
输出格式
请按 i 的升序,用空格分隔输出 Di (1≤i≤N)。
样例 1
输入
4
3 2 4 1
输出
2 2 3 3
样例 2
输入
7
1 2 3 4 5 6 7
输出
2 2 2 2 2 2 2
样例 3
输入
16
12 10 7 14 8 3 11 13 2 5 6 16 4 1 15 9
输出
3 3 3 5 3 4 3 3 4 2 2 4 4 4 4 7
说明/提示
限制条件
- 2≤N≤2×105
- 1≤Pi≤N (1≤i≤N)
- i=j⟹Pi=Pj
- 输入均为整数
样例解释 1
例如,对于 i=1:
- 当 j=2 时,∣Pi−Pj∣=1, ∣i−j∣=1。
- 当 j=3 时,∣Pi−Pj∣=1, ∣i−j∣=2。
- 当 j=4 时,∣Pi−Pj∣=2, ∣i−j∣=3。
因此,当 j=2 时 ∣Pi−Pj∣+∣i−j∣=2,为最小值,所以 D1=2。
由 ChatGPT 4.1 翻译