题目描述
在一条数轴上有N家商店,它们的坐标分别为 A[1]~A[N]。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。
输入
第一行一个整数N,第二行N个整数A[1]~A[N]。
输出
一个整数,表示距离之和的最小值。
样例输入
4
6 2 9 1
样例输出
12
#include <stdio.h>
#include <math.h>
#include<algorithm>
using namespace std;
long long a[1000000];
int main()
{
long long n,m;
long long sum=0;
long long i;
scanf("%lld",&n);
for(i=1;i<=n;i++)
scanf("%lld",&a[i]);
sort(a+1,a+n+1); //排序
if(n%2==1) //注意中位数的奇偶
m=n/2+1;
else m=(n+1)/2; //
for(i=1;i<=n;i++)
if(i!=m) sum+=abs(a[m]-a[i]);
printf("%lld\n",sum);
return 0;
}
//这题主要运用中位数的作法