#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[10000010],b[10000010],tta,ttb,zza,zzb;
long long ans;
int read(int x = 0) {
char ch = getchar();
while(ch < 48 || ch > 57) ch = getchar();
while(ch >= 48 && ch <= 57) {
x = x * 10 + (ch ^ 48);
ch = getchar();
}
return x;
}
signed main(){
n=read();
memset(a,0x3f,sizeof(a));
memset(b,0x3f,sizeof(b));
for(int i=1;i<=n;i++){
a[i]=read();
}
sort(a+1,a+1+n);
tta=1;
ttb=1;
b[++zzb]=a[tta]+a[tta+1];
tta=3;
ans+=b[zzb];
while(zzb<n-1){
if(a[tta+1]+a[tta]<b[ttb]+a[tta]&&a[tta+1]+a[tta]<b[ttb+1]+b[ttb]){
b[++zzb]=a[tta]+a[tta+1];
tta+=2;
ans+=b[zzb];
}
else if(b[ttb+1]+b[ttb]>b[ttb]+a[tta]){
b[++zzb]=b[ttb]+a[tta];
tta++;
ttb++;
ans+=b[zzb];
}
else{
b[++zzb]=b[ttb+1]+b[ttb];
ttb+=2;
ans+=b[zzb];
}
}
cout<<ans;
return 0;
}
快读开了,复杂度 O(n),队列