UVa 10954 - Add All

来源:互联网 发布:性价比高的原画网络班 编辑:程序博客网 时间:2024/05/16 00:54

一道最简单的优先队列的题, 每次把最小的两个相加。


#include <iostream>#include <queue>#include <cstdlib>#include <cstdio>#include <cstring>#include <string>#include <stack>#include <cctype>#include <cmath>#include <ctime>#include <algorithm>using namespace std;int main() {    int x, N;    while(cin >> N&& N) {        int ant = 0;        priority_queue<int, vector<int>, greater<int> > q;        for(int i = 0; i < N; i++) {cin >> x; q.push(x);}        for(int i = 0; i < N - 1; i++) {            int a = q.top(); q.pop();            int b = q.top(); q.pop();            ant += a + b;            q.push(a + b);        }        cout << ant << endl;    }    return 0;}


0 0
原创粉丝点击