优先队列自动解决了动态排序问题,非常好用。。。
#include <iostream> #include <algorithm> #include <vector> #include <queue> using namespace std; int n; int seeds[10000]; int presum[10000]; priority_queue<int,vector<int>,greater<int> > q; void init(){ cin>>n; for (int i = 0; i < n; ++i){ int t; cin>>t; q.push(t); } } int build(){ //看错题意结果傻逼了...应该模拟法 数据结构用优先队列.... int ans = 0; while(q.size()>=2){ int a = q.top(); q.pop(); int b = q.top(); q.pop(); q.push(a+b); ans += a+b; } return ans; } int main(int argc, char const *argv[]) { init(); cout<<build()<<endl; return 0; }