原题链接
思路
因为计算距离是分别计算的|x - x1|+|y - y1|,所以可以把所有的横纵坐标分开来看,要是距离都相等且最短,就要找中间的点,如果n是奇数,中间的点就一个,就直接输出1;如果不是偶数,那么就算他们中间一共有几个点,就是(x[n / 2 + 1] - x[n / 2] +1)*(y[n / 2 + 1] - y[n / 2] +1),+1是因为直接减的话会多减掉一个点,所以 + 1。
代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
int t, n;cin >> t;while(t --){
int x[1001] = {
0}, y[1001] = {
0};cin >> n;for(int i = 1; i <= n; i ++){
cin >> x[i] >> y[i];}if(n % 2 != 0){
cout << "1" << endl;}else{
sort(x + 1, x + n + 1);sort(y + 1, y + n + 1);cout << (x[n / 2 + 1] - x[n / 2] + 1) * (y[n / 2 + 1] - y[n / 2] + 1) << endl;}}return 0;
}