P14529 [RMI 2018] 攀爬者 / Climbers

题目背景

翻译来自于 [LibreOJ](https://loj.ac/p/5124)。

题目描述

**题目译自 [Romanian Master of Informatics 2018](https://rmi.lbi.ro/rmi_2018/) Day1 T1 「[Climbers](https://rmi.lbi.ro/rmi_2018/_dwl/public.zip)」** 一座山脉可以看作一条折线,从海平面(高度 $0$)开始,经过一系列严格正数的高度(称为内部高度),最终回到海平面。你和鲍勃分别从山脉的两端开始攀登。你们可以沿着山脉来回移动,但必须保持相同的高度(两人之间)。 你走过的路径的努力程度是路径上高度绝对差值的总和。具体来说,如果你的路径从高度 $h_1 = 0$ 开始,在高度 $h_2, h_3, \ldots, h_{P-1}$ 处改变方向,最终到达高度 $h_P$,那么该路径的努力程度为 $|h_2 - h_1| + |h_3 - h_2| + \cdots + |h_P - h_{P-1}|$。(由此可知,鲍勃在此期间的努力程度与你相同。) 你的任务是找出你和鲍勃相遇所需的最小努力程度。

输入格式

山脉被编码为一个包含 $N$ 个整数的数组,表示折线段端点的高度。第一行包含一个整数 $N$。第二行包含 $N$ 个整数,第一个和最后一个整数保证为 $0$。

输出格式

输出一个整数,表示你和鲍勃相遇所需的最小努力程度。如果无法相遇,输出 `NO`。

说明/提示

对于所有输入数据,满足: - $3 \leq N \leq 5000$ - 内部高度在 $1$ 到 $1000000$ 之间 每个测试点将单独评分。 | 子任务 | 分值 | 附加限制 | | :----: | :----: | :-------: | | $1$ | $25$ | 所有内部高度互不相同 | | $2$ | $25$ | $N \times H \leq 40000$,其中 $H$ 是最高高度 | | $3$ | $50$ | 无附加限制 |