单纯写自己看的
题目意思就不说了,直接说解题思路
除了数组中最大的数字只能用一次外,每个数字都可以用两次
比如1,2,3,4,5
对应3, 4, 4, 5, 0
根据这个思路 代码如下
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
const int N = 2e5+5;
int a[N];
int main()
{
int n;
cin>>n;
for(int i=1; i<=n; i++)
cin>>a[i];
sort(a+1, a+n+1);
reverse(a+1,a+n+1);//从大到小排列
queue<int> q;//输入队列
for(int i=2; i<=n; i++)
q.push(a[i]),q.push(a[i]);
long long ans=a[1];
for(int i= 3; i <= n; i++)
{
ans += q.front();
q.pop();
}
cout<<ans<<endl;
return 0;
}