重新发一下```cpp
#include<cstdio>
#include<algorithm>
using namespace std;
int a[200100];
int he[200100];
long long sum;
int main()
{
int n;
scanf("%d",&n);
int head=1;int tail=1;
int heada=1;int taila=n;
for(int i=1;i<=100010;i++)
{
a[i]=1000000;
he[i]=1000000;
}
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1);
for(;;)
{
if(heada>taila)
{
if(head+1==tail)
{
break;
}
}
int t1=a[heada]+a[heada+1];
int t2=a[heada]+he[head];
int t3=he[head]+he[head+1];
if(t1<=t2&&t1<=t3)
{
sum+=t1;
he[tail]=t1;
tail++;
heada+=2;
}
else if(t2<t1&&t2<=t3)
{
sum+=t2;
he[tail]=t2;
tail++;
heada++;
head++;
}
else if(t3<t1&&t3<t2)
{
sum+=t3;
he[tail]=t3;
tail++;
head+=2;
}
}
printf("%lld",sum);
return 0;
}
```
by 夢·壹生所愛 @ 2018-02-03 20:28:17
# 哎呀
```cpp
#include<cstdio>
#include<algorithm>
using namespace std;
int a[200100];
int he[200100];
long long sum;
int main()
{
int n;
scanf("%d",&n);
int head=1;int tail=1;
int heada=1;int taila=n;
for(int i=1;i<=100010;i++)
{
a[i]=1000000;
he[i]=1000000;
}
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1);
for(;;)
{
if(heada>taila)
{
if(head+1==tail)
{
break;
}
}
int t1=a[heada]+a[heada+1];
int t2=a[heada]+he[head];
int t3=he[head]+he[head+1];
if(t1<=t2&&t1<=t3)
{
sum+=t1;
he[tail]=t1;
tail++;
heada+=2;
}
else if(t2<t1&&t2<=t3)
{
sum+=t2;
he[tail]=t2;
tail++;
heada++;
head++;
}
else if(t3<t1&&t3<t2)
{
sum+=t3;
he[tail]=t3;
tail++;
head+=2;
}
}
printf("%lld",sum);
return 0;
}
```
by 夢·壹生所愛 @ 2018-02-03 20:29:21
~~为什么不用万能的STL呢?~~
~~为什么不用优先队列呢?~~
~~为什么不用堆呢?~~
by Altria_Pendragon_ @ 2018-02-03 20:45:02