2136: 最小代价二叉树

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

一棵二叉树的代价是指,该二叉树每个结点的权值与该结点所在高度的乘积之和。

设一棵二叉树的中根遍历为1,2,...,i,...,n,各个点的权值分别为c1,c2,...,ci,...,cn,高度为h1,h2,...,hn,则这棵二叉树的代价为Σ(ci*hi)。

例如,一棵树的结点数为4,中根遍历下的权值为4,1,2,3,则下图为一种合法情况,这棵二叉树的代价为19。可以证明,这种构造二叉树的方法所产生的代价是最小的。

现在,给你n个结点的权值,请求出这棵二叉树的一种构造方法,使其代价最小。简单起见,只要输出最小代价即可,不需输出构造方法。

输入

第一行为一个整数n(n∈N*且n<=2500),表示结点总数。

接下来的n行,第i行只有一个整数ci(ci∈N*且ci<=16),含义如描述所述。

输出

只有一个整数,代表二叉树的最小代价。

样例输入 复制

4
4
1
2
3

样例输出 复制

19

提示

Adopted from Chapter 15th Dynamic Programming, Introducion to Algorithm.