我们设仓库位于x处,左边有p个商店,右边有q个商店。
如果当前p>q,仓库左移一个单位长度,距离之和就会减少p-q;
同理若p<q,仓库右移一个单位长度,距离之和就会减少q-p。
故我们最终一定是让p、q相等。
首先按坐标对商店排序,然后将仓库放在(n+1)/2上即可。
代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int a[N];
int n;
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+1+n);
int ans=0;
for(int i=1;i<=n/2;i++)ans+=a[n-i+1]-a[i];
cout<<ans;
return 0;
}