设一个n个节点的二叉树tree的中序遍历为(l,2,3,…,n),其中数字1,2,3,…,n为节点编号。每个节点都有一个分数(均为正整数),记第j个节点的分数为di,tree及它的每个子树都有一个加分,任一棵子树subtree(也包含tree本身)的加分计算方法如下: subtree的左子树的加分× subtree的右子树的加分+subtree的根的分数 若某个子树为主,规定其加分为1,叶子的加分就是叶节点本身的分数。不考虑它的空子树。 试求一棵符合中序遍历为(1,2,3,…,n)且加分最高的二叉树tree。 要求输出: (1)tree的最高加分 (2)tree的前序遍历 数据范围: ,每个节点的值满足
输入描述:
第一行输入一个正整数 n ,表示二叉树节点的个数。第二行输入 n 个正整数,表示二叉树中序遍历的节点分数


输出描述:
输出最高加分和前序遍历结果。
示例1

输入

5
5 7 1 2 10

输出

145
3 1 2 4 5
加载中...