https://www.acwing.com/problem/content/1355/
山的数据范围很小,直接暴力枚举即可。
#include<bits/stdc++.h>
using namespace std;
const int N=1100;
int n,a[N];
int main(void)
{
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
int ans=1e9;
for(int i=0;i<=83;i++)//枚举最低高度
{
int h=i+17,sum=0;
for(int j=0;j<n;j++)
{
if(a[j]>h) sum+=(a[j]-h)*(a[j]-h);//高于最高的高度
else if(a[j]<i) sum+=(i-a[j])*(i-a[j]);//低于最低的高度
}
ans=min(ans,sum);
}
cout<<ans<<endl;
return 0;
}