在一个按照东西和南北方向划分成规整街区的城市里
源代码在线查看: pro222.cpp
/*****
Problem C:邮局选地址
Time Limit:1000MS Memory Limit:65536K
Total Submit:178 Accepted:57
Language: not limited
Description
在一个按照东西和南北方向划分成规整街区的城市里,n个居民点散乱地分布在不同的街区中。用x 坐标表示东西向,用y坐标表示南北向。各居民点的位置可以由坐标(x,y)表示。街区中任意2 点(x1,y1)和(x2,y2)之间的距离可以用数值|x1-x2|+|y1-y2|度量。
居民们希望在城市中选择建立邮局的最佳位置,使n个居民点到邮局的距离总和最小。
编程任务:
给定n 个居民点的位置,编程计算n 个居民点到邮局的距离总和的最小值。
Input
第1 行是居民点数n,1 =< n 接下来n 行是居民点的位置,每行2 个整数x 和y,-10000 =< x,y
Output
输出n 个居民点到邮局的距离总和的最小值。
Sample Input
5
1 2
2 2
1 3
3 -2
3 3
Sample Output
10
********************/
/////////////////////////////////////////
#include
#include
/*求绝对多数绝对值*/
int nor(int a)
{
if(a return(a);
}
//////////////////////////////////////////
int main()
{
int hang[10],lie[10];
int count1,count2,n;
int tempt;
int all=0;
cin >> n;
for(count1=0;count1 {
cin >>hang[count1]>>lie[count1];
}
for(count1=0;count1 {
for(count2=n-1;count2>count1;count2--)
{
if(hang[count2]>hang[count2-1])
{
tempt=hang[count2];
hang[count2]=hang[count2-1];
hang[count2-1]=tempt;
}
if(lie[count2]>lie[count2-1])
{
tempt=lie[count2];
lie[count2]=lie[count2-1];
lie[count2-1]=tempt;
}
}
}
for(count1=0;count1 {
all=all+nor(hang[count1]-hang[count1/2])+nor(lie[count1]-lie[count1/2]);
}
cout }