P1091 - 哈夫曼树和最小的带权路径长度

题目描述

给定n个值为正整数的叶子节点,请你构造出哈夫曼树,并且计算出整棵哈夫曼树的带权路径长度WPL

输入格式

第1行,一个正整数n,代表叶子节点个数

第2行,n个正整数,代表每个叶子节点的值,用空格分隔

输出格式

1行,整棵哈夫曼树的带权路径长度WPL的值(也就是这些叶子节点能构成的所有二叉树中最小的带权路径长度)

输入输出样例

输入样例 输出样例
4
1 3 5 7
29
4
1 2 3 4
19

数据范围与提示

100%的数据:2 <= n <= 50,0 <= 每个叶子节点的值 <= 100

测试点数目

共10个测试点,每个测试点10分

时间与内存限制

每个测试点时间:1000ms(1.0s),内存:256MiB

输入输出模式

本OJ支持两种输入输出模式

1. 标准输入输出模式:
直接从标准输入和标准输出读写数据,不需要使用freopen进行文件输入输出重定向
2. 文件输入输出模式(国内信奥赛输入输出模式):
从文件中读写数据,需要使用freopen进行输入输出重定向
本题输入文件名为:P1091.in,输出文件名为:P1091.out