https://www.acwing.com/problem/content/description/1355/
一次惨痛的debug经历
#include<bits/stdc++.h>
using namespace std;
const int N=1100;
int n;
int a[N];
int b[N];
int righht[N],lefft[N];
int main(){
cin>>n;
for(int i=0;i<n;i++)cin>>a[i];
int ans=0;
sort(a,a+n);
memcpy(b,a,sizeof a);
//if(a[n-1])
int l=0,r=n-1;
int ll=0,rr=0;
while(l<r){
if(b[r]-b[l]<=17)break;
while(b[l+1]==b[l]){
l++;
}
while(b[r-1]==b[r]){
r--;
}
if(b[r]-b[l]>17){
int rrr=0,lll=0;
memcpy(lefft,b,sizeof b);
for(int i=0;i<=l;i++)
{
lefft[i]++;
lll+=(lefft[i]-a[i])*(lefft[i]-a[i]);
}
memcpy(righht,b,sizeof b);
for(int i=r;i<n;i++)
{
// rr=0;
righht[i]--;
rrr+=(a[i]-righht[i])*(a[i]-righht[i]);
}
if(rrr+ll>lll+rr){
memcpy(b,lefft,sizeof b);
ll=lll;
}
else {
memcpy(b,righht,sizeof b);
rr=rrr;
}
}
}
// for(int i=0;i<n;i++){
// printf("%-2d ",b[i]);
// ans+=(a[i]-b[i])*(a[i]-b[i]);
// }
// puts("");
// for(int i=0;i<n;i++)
// printf("%-2d ",a[i]);
// printf(" \nr=%d l=%d \n",r,l);
// printf("\nrr=%d ll=%d \n",rr,ll);
cout<<ll+rr<<endl;
// printf("%d\n",ans);
return 0;
}