样例都过了,但是只有十分!!!
#include<bits/stdc++.h>
using namespace std;
int n,dui[100005],x;
long long s;
void down(int a) {
int t;
while(a*2<=x) {
if(a*2+1<=x){
t=dui[a*2]<dui[a*2+1]?a*2:a*2+1;
}else{
t=a*2;
}
if(dui[a]<dui[t]) break;
else{
swap(dui[a],dui[t]);
a=t;
}
}
}
void shanchu(int a) {
dui[a]=dui[x--];
down(a);
}
void charu(int a) {
dui[++x]=a;
down(x);
}
int main() {
cin>>n;
for(int i=1; i<=n; i++) {
cin>>dui[i];
down(i);
}
x=n;
while(x>1) {
int a=dui[1];
shanchu(1);
int b=dui[1];
shanchu(1);
s+=a+b;
charu(a+b);
}
cout<<s;
return 0;
}