魔法音符
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

题目背景:
在回音谷中,有一排魔法音符柱。每个音符柱有不同的高度(数字越大声音越响亮)。当你在山谷两端同时播放音乐时,神奇的事情发生了:音符柱会吸收能量,形成"回音能量"!

规则说明:
1.回音能量只会出现在两侧都有比他"高"的音符柱上
2.每个矮音符柱能存储的能量 = 它左右两侧最高音符柱中较矮的那个 - 它自身的高度
3.山谷两端的音符柱不会存储能量(因为有一侧没有邻居)

任务:
给定一排音符柱的高度,计算整个山谷最多能存储多少回音能量。

输入描述:

第一行:音符柱数量 n,其中  
第二行:长度为n的数组a表示从左到右的音符柱高度,保证数组 0\leq a[i] \leq1e9 ()

输出描述:

一个数字表示整个山谷所能存储的最大回音能量 
示例1

输入

复制
12
0 1 0 2 1 0 1 3 2 1 2 1

输出

复制
6

说明

上面是由数组 【0 1 0 2 1 0 1 3 2 1 2 1】 表示的音符柱高度图,在这种情况下,整个山谷最多能存储6个单位的回音能量(蓝色部分表示回音能量)。