题目背景
请注意本题特殊的空间限制。
题目描述
给定一个长度为 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 |