4528. 营业额统计【平衡树】
时间限制:1000 MS 内存限制:256 MB
题目描述
Tiger 最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger 拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就证明公司此时的经营状况出现了问题。 经济管理学上定义了一种最小波动值来衡量这种情况:记该天以前某一天的营业额为 $a_i$,该天营业额为 $b$,则该天的最小波动值 $\delta = \min |a_i - b|$,当最小波动值越大时,就说明营业情况越不稳定。而分析整个公司的从成立到现在营业情况是否稳定,只需要把每一天的最小波动值加起来就可以了。 你的任务就是编写一个程序帮助 Tiger 来计算这一个值,第一天的最小波动值为第一天的营业额。 一句话题意:给出一个 $n$ 个数的数列 $\{a_n\}$,对于第 $i$ 个元素 $a_i$,定义 $f_i = \min |a_i - a_j|$,其中 $1 \leq j < i, f_1 = a_1$。求 $\sum f_i$。 ## 输入 - 第一行为正整数,表示该公司从成立一直到现在的天数; - 接下来的 $n$ 行每行有一个正整数,表示第 $i$ 天公司的营业额 $a_i$。 ## 输出 仅有一个正整数,即每一天最小波动的和,结果不超过 $2^{31}$。 ## 输入样例 ``` 6 5 1 2 5 4 6 ``` ## 输出样例 ``` 12 ``` ## 提示 样例说明: $5 + |1 - 5| + |2 - 1| + |5 - 5| + |4 - 5| + |6 - 5| = 5 + 4 + 1 + 0 + 1 + 1 = 12$ ## 数据范围与提示 对于全部数据,$1 \leq n < 2^{15}, a_i \leq 10^6$。 ---