代码如下,思路是排数列,从两边向中间跳跃
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
int a[305];
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+n+1);
int str=0;
int temp=1;
int h=0;
if(n%2==1)
{
for(int i=1;i<(n-1)/2;i++)
{
str+=(a[n+1-temp]-h)*(a[n+1-temp]-h);
h=a[n+1-temp];
str+=(a[temp]-h)*(a[temp]-h);
h=a[temp];
temp++;
}
str+=(a[(n+1)/2]-h)*(a[(n+1)/2]-h);
}
else if(n%2==0)
{
for(int i=1;i<n/2;i++)
{
str+=(a[n+1-temp]-h)*(a[n+1-temp]-h);
h=a[n+1-temp];
str+=(a[temp]-h)*(a[temp]-h);
h=a[temp];
temp++;
}
}
cout<<str<<endl;
return 0;
}