51Nod_1096 距离之和最小【中位数】

                                      51Nod_1096 距离之和最小

                                 http://www.51nod.com/Challenge/Problem.html#!#problemId=1096

题目

X轴上有N个点,求X轴上一点使它到这N个点的距离之和最小,输出这个最小的距离之和。

输入

第1行:点的数量N。(2 <= N <= 10000)。第2 - N + 1行:点的位置。(-10^9 <= P[i] <= 10^9)

输出

输出最小距离之和

样例输入

5
-1
-3
0
7
9

样例输出

20

分析

易知,所求点在所有点的中心段。

C++程序

#include<iostream>
#include<algorithm>

using namespace std;

typedef long long ll;

const int N=10000;

ll a[N];

int main()
{
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	  cin>>a[i];
	sort(a,a+n);
	int i=0,j=n-1;
	ll sum=0;
	while(i<=j){
		sum+=a[j--]-a[i++];
	}
	cout<<sum<<endl;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/SongBai1997/article/details/86652670