大佬的AC代码:
/*
*把所有的数进行由小到大排列
*大的与小的配对
*/
#include <bits/stdc++.h>
using namespace std;
int n,a[100002];
int main(){
cin>>n;
a[0]=0;
for(int i=1;i<=n;++i){
cin>>a[i];
}
int ans = 0;
sort(a+1,a+n+1);
int ll=1,rr=n;
while(ll<rr){
ans+=(a[rr]-a[ll]) * (a[rr]-a[ll]);
rr--;
ans+=(a[rr]-a[ll]) * (a[rr]-a[ll]);
ll++;
}
//补上第一位为0的情况
ans += a[n] * a[n];
cout << ans << endl;
}
超时代码:
#include <iostream>
#include <algorithm>
using namespace std;
#define MAX 100005
int main()
{
long int n,i,sum=0,max=0;
long int num[MAX]={0};
cin>>n;
for(i=0;i<n;i++)
{
cin>>num[i];
}
sort(num,num+n);
do
{
sum=0;
for(i=0;i<n;i++)
{
sum += (num[i]-num[i+1])*(num[i]-num[i+1]);
}
if(sum>max)
{
max=sum;
}
}while(next_permutation(num,num+n));
cout<<max<<endl;
return 0;
}