设从 i 向右行驶的每一步电量改变量为 Δk=ak−ak+1。从 i 出发到 j 的前缀和为 ∑t=ij−1(at−at+1)=ai−aj(望文生义的“望远镜求和”)。
为使过程中电量不为负,初始电量需至少抵消最小前缀和:
题目要求到达任意一端的最小初始电量,即二者取最小:
给定一个长度为 n 的山脉序列 a={ a1,a2,…,an },其中第 i 个元素 ai 表示第 i 座山的高度。电动汽车可以从任意位置 i 出发,选择一直向左或一直向右行驶,直到山脉的端点。
行驶规则如下,当从一座高度为 h 的山行驶到相邻一座高度为 h1 的山时:
若 h1≥h2 (下坡),电量增加 h1−h2 ;
若 h1<h2 (上坡),电量消耗 h2−h1 。
对于每一个可能的出发点 i(1≤i≤n) ,你需要分别计算,若选择从 i 出发并一直向左行驶,或从 i 出发并一直向右行驶,两种情况下为了保证行驶过程中电量始终不为负,所需的最小初始电量。
第一行输入一个整数 n(1≤n≤105) ,表示山脉序列的长度。
第二行输入 n 个整数 a1,a2,⋅⋅⋅,an(0≦ai≦109) ,表示山脉的高度。
输出一行 n 个整数,用空格隔开。第 i 个整数表示从位置 i 出发,到达任意一端所需的最小初始电量。
输入
5
3 1 2 2 3
输出
0 2 1 1 0