注意一下优先队列的写法!!
代码
#include <queue>#include <vector>#include <cstdio>using namespace std;priority_queue<int, vector<int>, greater<int> > q;int main(){int a;while(scanf("%d", &a) != EOF){int temp, ans = 0;for(int i = 0; i < a; i++) {scanf("%d", &temp);q.push(temp);}while(q.size() > 1){int x = q.top();q.pop();int y = q.top();q.pop();q.push(x + y);ans += x + y;}while(!q.empty()) q.pop();printf("%d\n", ans);}}
