设(minh)为(n)座山峰高度的最小值,(maxh)为(n)座山峰高度的最大值。
枚举最终调整后的最低峰的高度为(k),则最高峰的高度为(k+17),对于低于最终最低峰高度的山峰或高于最终最高峰高度的山峰,对他们进行调整。
const int N=1010;
int h[N];
int n;
int main()
{
cin>>n;
int minh=100,maxh=0;
for(int i=0;i<n;i++)
{
cin>>h[i];
minh=min(minh,h[i]);
maxh=max(maxh,h[i]);
}
int res=INF;
for(int k=minh;k+17<=maxh;k++)
{
int sum=0;
for(int i=0;i<n;i++)
{
if(h[i] < k) sum+=(h[i]-k)*(h[i]-k);
if(h[i] > k+17) sum+=(h[i]-k-17)*(h[i]-k-17);
}
res=min(res,sum);
}
cout<<res<<endl;
//system("pause");
return 0;
}