#include<bits/stdc++.h>
using namespace std;
long long tmp,last2,n,num1[10000005],num2[10000005],ans,it1,it2,num,ort[10000005];
void read(long long &x)
{
int f=1;x=0;char s=getchar();
while(s < '0' || s > '9' )
{
if(s == '-')
{
f = -1;
s = getchar();
}
}
while(s >= '0' && s <= '9')
{
x = x*10+s-'0';
s = getchar();
}
x *= f;
}
int main()
{
read(n);
memset(ort,0,sizeof(ort));
memset(num1,127,sizeof(num1));
memset(num2,127,sizeof(num2));
for(int i = 0; i < n; i++)
{
read(tmp);
ort[tmp]++;
}
long long p = 0;
for(long long i = 0; i < 10000005; i++)
{
for(long long j = 0; j < ort[i]; j++)
{
num1[p] = i;
p++;
}
}
/*for(int long long i = 0; i < n; i++)
{
cout <<num1[i]<<endl;
}*/
for(int l = 0; l < n-1; l++)
{
num = 0;
num+=num1[it1]<num2[it2]?num1[it1++]:num2[it2++];
num+=num1[it1]<num2[it2]?num1[it1++]:num2[it2++];
num2[last2++] = num;
ans+=num;
}
cout<<ans;
}
第四个测试点TLE,其他全AC。 第四个点数据范围很小,为何会TLE?如何优化?