3月21日
题目内容
根据题目数据范围来,我们如果用循环遍历,最后肯定会超时,使用我们需要更好的方法,这个时候我们需要知道数轴上顺序排位的中位数就是距离和最小的,这个时候我们就可以先对数组进行排序,找到中位数,并对每个数求距离,加起来就是距离和小的情况。
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n);
int sum=0;
for(int i=0;i<n;i++)
{
sum+=abs(a[i]-a[n/2]);
}
cout<<sum;
}