问题描述
在一条数轴上有 N
家商店,它们的坐标分别为 A₁, A₂, ..., Aₙ
。
现在需要在数轴上建立一家货仓。每天清晨,从货仓到每家商店都要运送一车商品。
为了提高效率,请你计算应将货仓建立在何处,才能使得货仓到每家商店的距离之和最小。
输入格式
- 第一行输入一个整数
N
,表示商店数量。 - 第二行输入
N
个整数A₁ ∼ Aₙ
,表示每家商店在数轴上的位置。
输出格式
输出一个整数,表示距离之和的最小值。
数据范围
1 ≤ N ≤ 100000
0 ≤ Aᵢ ≤ 40000
输入样例
4
6 2 9 1
输出样例
12
c++代码
#include<bits/stdc++.h>using namespace std;typedef long long ll;ll N, ans = 0;
ll arr[100001];int main() {scanf("%lld", &N);for (int i = 1; i <= N; i++) {scanf("%lld", &arr[i]);}sort(arr + 1, arr + N + 1);ll left = N / 2, right = left + 1;if (N % 2 != 0) right++;while(left >= 0 && right <= N) {ans += (arr[right] - arr[left]);left--, right++;}printf("%lld", ans);return 0;
}//by wqs