思路:
先对高度排序,然后再跳高的,然后跳低的,循环往复。
#include<bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
#define ll long long
int h[100010];
int main()
{
int n;
scanf("%d",&n);
for(int i = 1; i <= n; i++)
{
scanf("%d",&h[i]);
}
sort(h+1, h+1+n);
bool flag = true;
int l = 0,r = n;
ll ans = 0;
while(l < r)
{
if(flag)
{
ans += pow(h[r] - h[l],2);
flag = false;
//printf("(%lld)",ans);
l++;
}
else
{
ans += pow(h[r] - h[l],2);
r--;
//printf("(%lld)",ans);
flag = true;
}
}
printf("%lld\n",ans);
}