题目来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=7
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int MAXN = 25;
struct Node
{
int x;
int y;
Node()
{
x = y = 0;
}
}iHouse[MAXN];
int cmp1(Node a, Node b)
{
return a.x < b.x;
}
int cmp2(Node a, Node b)
{
return a.y < b.y;
}
int main()
{
int T, num, i, x0, y0, sum;
scanf("%d", &T);
while(T--)
{
scanf("%d", &num);
memset(iHouse, 0, sizeof(iHouse));
for(i = 0; i < num; ++i)
scanf("%d %d", &iHouse[i].x, &iHouse[i].y);
sort(iHouse, iHouse+num, cmp1);
x0 = iHouse[num/2].x;
sort(iHouse, iHouse+num, cmp2);
y0 = iHouse[num/2].y;
sum = 0;
for(i = 0; i < num; ++i)
{
int a = fabs(iHouse[i].x - x0);
int b = fabs(iHouse[i].y - y0);
sum += (a + b);
}
printf("%d\n", sum);
}
return 0;
}