你的头怎么尖尖的
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

Bezime 是理发魔法师,不仅可以剃发,还可以补发,是 Bezime 加了魔法。
用一个长度为 n 一维数组 \left \{ h_1,h_2,\dots,h_n \right \} 表示一个人每根头发的高度,第 i 根头发的高度为 h_i。如果存在一个(或多个)位置 i(1<i<n) 使得 h_{i-1}<h_i 且 h_i >h_{i+1},那么这个人的头被认为是尖尖的。
不过好在 Bezime 会理发,每次操作他可以选择一个位置 i,将第 i 根头发的高度 h_i 变为 h_i + 1 或者 h_i - 1,操作次数不限(可以不操作)。
现在 TGSTY 前来理发,他想让自己的头不再尖尖的。
Bezime 喜欢偷懒,想要最小化理头操作次数 sum
那 Bezime 问你,Bezime 给 TGSTY 理头最少要操作多少次。

输入描述:

第一行一个正整数 n(1 \le n \le 2 \times 10^5)
第二行 n 个正整数 h_1,h_2,\dots,h_n(1 \le h_i \le 10^9)

输出描述:

输出一个整数 sum,表示最小理头操作次数。
示例1

输入

复制
6
1 1 4 5 1 4

输出

复制
1

说明

Bezime 可以选择第 4 根头发,将其高度减少 1,操作 1 次。

此时 TGSTY 的头发的高度为 1\ 1\ 4\ 4\ 1\ 5,共操作 1 次。

示例2

输入

复制
5
2 5 3 6 2

输出

复制
3

说明

Bezime 可以选择第 3 根头发,将其高度增加 3,操作 3 次。
此时 TGSTY 的头发的高度为 2\ 5\ 6\ 6\ 2,共操作 3 次。
示例3

输入

复制
7
1 3 1 3 1 3 1

输出

复制
4

说明

Bezime 可以选择第 3 根头发,将其高度增加 2,操作 2 次。再选择第 6 根头发,将其高度减少 2,操作 2 次。
此时 TGSTY 的头发的高度为 1\ 3\ 3\ 3\ 1\ 1\ 1,共操作 4 次。