题目描述
给定一个长度为 N 的整数序列 A=(A1,A2,…,AN)。
高桥君可以无限次(也可以不进行)重复以下两种操作中的任意一种:
- 选择满足 1≤i≤N−1 的整数 i,将 Ai 减 1,将 Ai+1 加 1。
- 选择满足 1≤i≤N−1 的整数 i,将 Ai 加 1,将 Ai+1 减 1。
请你求出,为了使数列 A 满足以下条件,所需操作次数的最小值:
- 对于任意 1≤i,j≤N,都有 ∣Ai−Aj∣≤1。
输入格式
输入以如下格式从标准输入读入:
N A1 A2 … AN
输出格式
请输出使数列 A 满足题目条件所需的最小操作次数。
样例 1
输入
3
2 7 6
输出
4
样例 2
输入
3
-2 -5 -2
输出
2
样例 3
输入
5
1 1 1 1 -7
输出
13
说明/提示
限制条件
- 2≤N≤5000
- ∣Ai∣≤109
- 输入均为整数
样例解释 1
可以通过如下方式在 4 次操作后使 A 满足条件:
- 选择 i=1,将 A1 加 1,A2 减 1,此时 A=(3,6,6)。
- 选择 i=1,将 A1 加 1,A2 减 1,此时 A=(4,5,6)。
- 选择 i=2,将 A2 加 1,A3 减 1,此时 A=(4,6,5)。
- 选择 i=1,将 A1 加 1,A2 减 1,此时 A=(5,5,5)。
此时操作次数最小,因此输出 4。
样例解释 2
可以通过如下方式在 2 次操作后使 A 满足条件:
- 选择 i=1,将 A1 减 1,A2 加 1,此时 A=(−3,−4,−2)。
- 选择 i=2,将 A2 加 1,A3 减 1,此时 A=(−3,−3,−3)。
此时操作次数最小,因此输出 2。
样例解释 3
通过合理操作,在 13 次操作后可以得到 A=(0,0,−1,−1,−1),满足题目条件。用 12 次或更少的操作无法满足条件,因此输出 13。
由 ChatGPT 4.1 翻译