思路:
使用vector容器来存放数据,用sort函数对vector容器进行从大到小排序,便于使用v.back()
取到最后一个数(即最小的数)和v.pop_back
删除最后一个数
#include <bits/stdc++.h>
using namespace std;
vector<int>v;
int main()
{
// #ifdef ONLINE_JUDGE
// #else
// freopen("1.txt", "r", stdin);
// #endif
int n,t,ans=0;
cin>>n;
while(n--)
{
cin>>t;
v.push_back(t);
sort(v.begin(),v.end(),greater<int>());
}
while(v.size()!=1)
{
int a=0;
a+=v.back();//取到最小的数并加到a上
v.pop_back();//把最小的数删除
a+=v.back();//把第二小的数加到a上
v.pop_back();//把第二小的数删除
ans+=a;//最小的两个数的费用加到ans上
v.push_back(a);//把费用插入vector容器
sort(v.begin(),v.end(),greater<int>());//vector容器从大到小排序,便于下一轮取到最小的两个数
}
cout<<ans;
return 0;
}