PostOffice

PostOffice


                           Time Limit: 1000MS Memory Limit: 65535KB
Submissions: 200 Accepted: 54

  在一個按照東西和南北方向劃分成規整街區的城市裏,n個居民點散亂地分佈在不同的街區中。用x 座標表示東西向,用y座標表示南北向。各居民點的位置可以由座標(x,y)表示。   街區中任意2 點(x1,y1)和(x2,y2)之間的距離可以用數值|x1-x2|+|y1-y2|度量。   居民們希望在城市中選擇建立郵局的最佳位置,使n個居民點到郵局的距離總和最小。   任務:給定n 個居民點的位置,編程計算n 個居民點到郵局的距離總和的最小值。

Sample Input

5
1 2
2 2
1 3
3 -2
3 3

Sample Output

10

中位數問題!

#include<iostream>
#include<algorithm>
using namespace std;
int f(int a)
{
    return a<0?-a:a;
}
int main()
{
   int i,j,k,n;
   cin>>n;
   int *a=new int[n];
   int *b=new int[n];
   for(i=0;i<n;i++)
    cin>>a[i]>>b[i];
   sort(a,a+n);
   sort(b,b+n);
   j=a[n/2];
   k=b[n/2];
   int l=0;
   for(i=0;i<n;i++)
    l+=f(a[i]-j)+f(b[i]-k);
   cout<<l<<endl;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章