枚举H高度,并不断Check。
比H小的直接加上去,比H大的判断下。
/*
ID:ypcdyx1
PROG:skidesign
LANG:C++
*/
#include <iostream>
#include <fstream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <queue>
#include <cstring>
#include <vector>
#include <iomanip>
#define cin fin
#define cout fout
using namespace std;
ifstream fin;
ofstream fout;
int n;
int a[10010];
long long ans;
long long dis;
int h;
int cmp(int q,int w)
{
return q<w;
}
int main()
{
fin.open("skidesign.in");
fout.open("skidesign.out");
cin>>n;
for (int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+n+1,cmp);
h=1;
for (int i=1;i<=n;i++) if (abs(a[i]-h)>17) ans+=(abs(a[i]-h)-17)*(abs(a[i]-h)-17);
for (h=2;h<=120;h++)
{
dis=0;
for (int i=1;i<=n;i++) if (a[i]<=h) dis+=(h-a[i])*(h-a[i]);else if (a[i]-h>17) dis+=(a[i]-h-17)*(a[i]-h-17);
if (dis<ans) ans=dis;
}
cout<<ans<<endl;
fin.close();
fout.close();
}