题目背景
请注意本题特殊的空间限制。
题目描述
给定一个长度为 n 的序列 a,你需要将 a 划分成若干个非空连续子段。
对于每个子段 [l,r],定义其贡献 w=(mini=lrai)×(maxi=lrai)。你需要找出一种划分方式,使 ∑w 的值最小,输出这个最小值。
输入格式
第一行一个整数 n。
第二行 n 个整数,代表数列中的数。
输出格式
一行一个数,代表答案。
4
-1 2 -1 2
-4
6
-3 4 -9 1 2 4
-48
提示
【样例 1 解释】
划分方案: −1 2  −1 2。
【样例 2 解释】
划分方案: −3 4  −9 1 2 4。
【数据范围】
本题采用捆绑测试。
对于 100% 的数据, 1≤n≤106,−106≤ai≤106。
| 子任务编号 | 
n≤ | 
特殊性质 | 
分值 | 
| 1 | 
500 | 
无 | 
5 | 
| 2 | 
5000 | 
10 | 
| 3 | 
105 | 
保证 ai 正负性相同 | 
5 | 
| 4 | 
保证 ai∈{−1,0,1} | 
10 | 
| 5 | 
保证 ai 随机生成 | 
| 6 | 
无 | 
15 | 
| 7 | 
106 | 
保证 a 中负数个数小于 2000 个 | 
| 8 | 
无 | 
30 |