uva 10954

哈夫曼算法,水的一匹

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std;
int a[5000+10];
int n;
priority_queue<int ,vector<int>,greater<int> > aa;
int main()
{
    while(~scanf("%d",&n)&&n)
    {    while(aa.size())
           aa.pop();
        for(int i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
            aa.push(a[i]);
        }
        int ans=0;
        while(aa.size()>1)
        {
            int x=aa.top(); aa.pop();
            int y=aa.top(); aa.pop();
            ans=x+y+ans;
            aa.push(x+y);
        }
        printf("%d\n",ans);
    }
    return 0;
}

 

posted on 2017-05-18 22:52  发牌员  阅读(109)  评论(0)    收藏  举报

导航