原题链接:https://ac.nowcoder.com/acm/contest/1001/B
解题思路:把A[1]~A[N]排序,假设货仓左边有P家店,右边有Q家店,如果P < Q,当货仓选址向右移动1单位,则总距离会减小Q - P, 如果P > Q,当货仓地址向左移,总距离会减小,所以最优解是P == Q。对A[]进行排序,然后取中位数作为货仓地址
(这道题难在思考货仓位置和总距离的关系,排序直接套模板就好)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
int n;
int a[N];
int main()
{
cin>>n;
for(int i = 0; i < n; i ++ ){
cin>>a[i];
}
sort(a, a + n);
ll res = 0;
for(int i = 0; i < n; i ++ ){
res += abs(a[i] - a[i / 2]);
}
cout<<res;
return 0;
}