51Nod 1096 距離之和最小
阿新 • • 發佈:2018-11-11
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
畫圖就能看出規律來了。
先將給出的座標排序。
距離最小值為後i座標減去前i座標(從小到大順序),如果給出的為奇數個座標,則不需要考慮那中間單獨的一個。
程式碼如下:
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std; typedef long long ll; const int maxn=1e5; int n; ll sum=0; ll a[maxn]; int main() { int n; scanf("%d",&n); for (int i=0;i<n;i++) { scanf("%lld",&a[i]); } sort (a,a+n); for (int i=0;i<n/2;i++) { sum=sum+a[n-i-1]-a[i]; } printf("%lld\n",sum); return 0; }