题目分析:
这个题目要我们求到达个商店的距离之和最短,所以我们的起点就是我们的选的货仓地址。
思路:
从这个题我们可以用以前学的数学知识,就是把这个题换成求这个数组的中位数,然后把数组的每个数减去这个中位数的绝对值,我们一定要用abs()这个函数,再定义一个ans来储存数组的每个数减去这个中位数的绝对值的和,最后把他输出来就行了。
代码:
#include<iostream>
#include<algorithm>
#include<math.h>
#include<cmath>
using namespace std;
int a[100010];
int main(){
int n,ban;
cin>>n;
int ans=0;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
if(n%2==0){
ban=(a[(n-1)/2]+a[(n-1)/2+1])/2;
}else
if(n%2!=0){
ban=a[n/2];
}
for(int i=0;i<n;i++){
int nmb=abs(a[i]-ban);
ans+=nmb;
}
cout<<ans;
return 0;
}