首先将数组\(a\)从小到大排序。
当\(x\)位于\(a_n\)和\(a_1\)之间时,\(|a_1-x|+|a_n-x| \ge |a_n-a_1|\),依次类推,当\(x\)位于所有数的中位数上时,上式等号成立。
const int N = 1e5+10;
int a[N];
int n;
int main()
{
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
int mid=a[n/2];
int res=0;
for(int i=0;i<n;i++) res+=abs(a[i]-mid);
cout<<res<<endl;
return 0;
}
原文:https://www.cnblogs.com/fxh0707/p/14784398.html