当前位置: 代码迷 >> 综合 >> B. Eastern Exhibition
  详细解决方案

B. Eastern Exhibition

热度:73   发布时间:2023-10-14 01:26:54.0

原题链接
B. Eastern Exhibition
思路
因为计算距离是分别计算的|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;
}