|
#include <iostream>
using namespace std;
long seeds[9999],n,sum=0;
void pop(int a,int b)
{
for(int k=a; k<b; k++)
{
for(int k2=a; k2<b-k+a; k2++)
{
if(seeds[k2]>seeds[k2+1])
{
int temp=seeds[k2];
seeds[k2]=seeds[k2+1];
seeds[k2+1]=temp;
}
}
}
}
int main()
{
cin>>n;
for(int i=1; i<=n; i++)
cin>>seeds[i];
pop(1,n);
int merges=n+1,head=1,j,j2;
while(n>1)
{
int m=n/2;
for( j=merges,j2=head; j<merges+m; j++,j2+=2)
{
seeds[j]=seeds[j2]+seeds[j2+1];
sum+=seeds[j];
}
if(n%2==0)
{
head=n+1;
merges=j;
n=m;
}
else if(n%2!=0)
{
pop(merges-1,merges-1+m);
head=merges-1;
merges=j;
n=m+1;
}
}
cout<<sum;
return 0;
}
|
|