#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e6+10;
int a[N];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+n+1);
int ans=0,x=a[(n-1)/2+1];
for(int i=1;i<=n;i++)
{
if(i!=(n-1)/2+1)
{
ans+=abs(x-a[i]);
}
}
cout<<ans<<endl;
}
经典的贪心问题,如果有一个商店,那一定是建在商店上,距离之和最小,如果有两个商店,那一定要建在两个商店之间。
如果有三个商店,一定要建在中间的商店上面。用公式来推导的话,就是每个点到c的绝对值之和最小,把所有这样的式子
分成两组类似|a[n]-c|+|a[1]-c|的两组,这个式子值最小是建在中间,所以建在最中间一定是最小的。

京公网安备 11010502036488号