假设仓库位置在c,所有距离之和为如下绝对值不等式,分组之后可知,最小值需要取在a1 an之间,a2 an-1之间....以此类推,仓库位置需要设在所有店铺的中间点,此时仓库到两店铺的距离之和即为两店铺的距离
(当店铺数量为奇数时,设在中间点,偶数设在中间两个店或其中间某点均可,每组不等式的最小值即为两店铺的距离)
#include <bits/stdc++.h>
using namespace std;
const int N=100100;
int a[N],n,ans;
int main()
{
cin>>n;
for (int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+1+n);
int c=a[n/2+1];
for (int i=1;i<=n;i++)
ans=ans+abs(a[i]-c);//统计和中位数之间的差
cout<<ans;
return 0;
}