题目描述
你负责在托伦郊区开发新的地产项目。你已经决定沿一条主街建设 n 块地产,编号从 1 到 n。这片区域地势有些起伏,第 i 块地产的海拔高度为 ai 厘米。
然而,市场调查显示,没人愿意购买位于坡地上的地产。形式化地,对于海拔高度 a1,a2,…,an,坡地是指一个连续子序列 ai−1,ai,…,aj,aj+1,其中 2≤i≤j≤n−1,满足以下任一条件:
- ai−1<ai=ai+1=…=aj<aj+1;
- ai−1>ai=ai+1=…=aj>aj+1。
直观来说,坡地是指位置 i−1,i,i+1,…,j,j+1 的一段连续地产,其中位置 i,i+1,…,j 的所有地产海拔高度均为某个值 h,且 h 严格介于 ai−1 和 aj+1 之间。
你可以将任意一块地产的海拔高度增加或减少任意整数值,但你希望尽可能减少总的工作量。你的任务是确定消除所有坡地所需的最小海拔总变化量。也就是说,你需要找到一组没有坡地的新海拔高度 b1,b2,…,bn,使得 ∣a1−b1∣+∣a2−b2∣+…+∣an−bn∣ 尽可能小。新海拔高度 bi 必须为整数(注意,这里不要求为正数),且对 bi 没有其他限制。
输入格式
第一行包含一个整数 n (1≤n≤2⋅105),表示主街上的地产数量。
第二行包含 n 个整数 a1,a2,…,an (0≤ai≤109),其中第 i 个整数 ai 表示第 i 块地产的初始海拔高度。
输出格式
输出消除所有坡地所需的最小海拔总变化量。
11
7 2 1 2 5 7 8 8 10 8 8
5
数据范围与提示
详细子任务附加限制及分值如下表所示。
子任务编号 |
附加限制 |
分值 |
1 |
n≤5 且 ai≤10 |
4 |
2 |
n≤2000 |
13 |
3 |
ai≤10 |
8 |
4 |
ai<ai+1 |
19 |
5 |
n≤2⋅104 |
29 |
6 |
无附加限制 |
27 |