【题解】codeforce1184 C1. Heidi and the Turing Test (Easy)⭐⭐【构造 思维】

codeforce1184 C1. Heidi and the Turing Test (Easy)

The Cybermen and the Daleks have long been the Doctor’s main enemies. Everyone knows that both these species enjoy destroying everything they encounter. However, a little-known fact about them is that they both also love taking Turing tests!

Heidi designed a series of increasingly difficult tasks for them to spend their time on, which would allow the Doctor enough time to save innocent lives!

The funny part is that these tasks would be very easy for a human to solve.

The first task is as follows. There are some points on the plane. All but one of them are on the boundary of an axis-aligned square (its sides are parallel to the axes). Identify that point.

Input

The first line contains an integer n (2≤n≤10).

Each of the following 4n+1 lines contains two integers xi,yi (0≤xi,yi≤50), describing the coordinates of the next point.

It is guaranteed that there are at least n points on each side of the square and all 4n+1 points are distinct.

Output

Print two integers — the coordinates of the point that is not on the boundary of the square.

Examples

inputCopy
2
0 0
0 1
0 2
1 0
1 1
1 2
2 0
2 1
2 2
outputCopy
1 1
inputCopy
2
0 0
0 1
0 2
0 3
1 0
1 2
2 0
2 1
2 2
outputCopy
0 3

Hint




题意:

给出4n+1个点, 除了一个点之外其余点都在一个正方形的边界上, 找出这个点

题解:

构造 + 判断即可

经验小结:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <stdlib.h>
#include <vector>
#include <queue>
#include <cmath>
#include <stack>
#include <map>
#include <set>
using namespace std;
#define ms(x, n) memset(x,n,sizeof(x));
typedef  long long LL;
const int inf = 1<<30;
const LL maxn = 510;
 
int N;
int x[maxn], y[maxn];
bool judge(int t){
    int by = inf, ty = -inf, lx = inf, rx = -inf;
    for(int i = 1; i <= N; ++i)
        if(i != t){
            by = min(by, y[i]);
            ty = max(ty, y[i]);
            lx = min(lx, x[i]);
            rx = max(rx, x[i]);
        }
    bool flag = true;
    for(int i = 1; i <= N; ++i)
        if(i != t){
            if(x[i]!=lx && x[i]!=rx && y[i]!=by && y[i]!=ty){
                flag = false;
                break;
            }
        }
    if(flag && ty-by==rx-lx) return true;
    else return false;
}
int main()
{
    cin >> N;
    N = 4*N+1;
    for(int i = 1; i <= N; ++i)
        cin >> x[i] >> y[i];
    for(int i = 1; i <= N; ++i){
        if(judge(i)){
            cout << x[i] << " " << y[i] << endl;
            break;
        }
    }
	return 0;
}
/*
2
0 0
1 1
0 1
0 2
1 0
1 2
2 0
2 1
2 2
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值