注意一下数据的申明就好 很简单的哈弗曼树
#include<stdio.h>
#define MAXN 20000
main()
{
int a[MAXN],i,n,maii1,maii2,l,k,t;
__int64 ans=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(;n>1;n--){
maii1=0;
maii2=1;
if(a[maii1]>a[maii2])
{
l=a[maii1];
a[maii1]=a[maii2];
a[maii2]=l;
}
for(k=2;k<n;k++)
{
if(a[k]<a[maii1])
{
maii2=maii1;
maii1=k;
}
else if(a[k]<a[maii2])
{
maii2=k;
}
}
t=a[maii1]+a[maii2];
ans+=t;
a[maii1]=t;
a[maii2]=a[n-1];
}
printf("%I64d\n",ans);
}