环绕膜拜 (round)

问题 E: 环绕膜拜 (round)

时间限制: 1 Sec  内存限制: 128 MB
提交 状态

题目描述

XXX 大学霸,巨啊! —— 福州时代中学 2019 届名言

学长们非常喜欢把一个人环绕起来膜,比如 谢队 。

现在把机房抽象成平面直角坐标系,共有 n 个人,第 i 个人的坐标是 (xi,yi) 。

一个定义平面上的一个点为黄金被膜点,当且仅当可以把 n 个点分成 n/2 对,每组的两个点连成的线段的中点都是这个点。

现在机房的人想找到这个黄金被膜点,方便 谢队 来的时候膜他。

花生 被安排找到这个黄金被膜点,可是他比较蠢,于是他来求助你。

输入

共 n+1 行。

第 1 行有一个正偶数 n ,表示机房的人数。

接下来 n 行,每行两个整数xi,yi  ,表示第 i 个人所在的位置。

输出

若可以找到这个黄金被膜点,那么输出两个整数(保证其是整点),表示这个黄金被膜点的坐标;若无法找到这个点,则输出 There is not a place like that. 。

样例输入 Copy

【样例1】
8
1 10
3 6
6 8
6 2
3 -4
1 0
-2 -2
-2 4
【样例2】
8
1 100
3 6
6 8
6 2
3 -4
1 0
-2 -2
-2 4

样例输出 Copy

【样例1】
2 3
【样例2】
There is not a place like that.

提示

环绕膜拜 (round)_第1张图片
 
 
#pragma GCC optimize(2)
#include
#include
#include
#include
#include<string> 
#include  
#include
#include
using namespace std; 
typedef long long ll; 
inline int read()
{
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}
const int maxn=1e5+100;
int main(){
    ll n,x,y;
    cin>>n;
    double sumx=0,sumy=0;
    for(int i=1;i<=n;i++){
        x=read(),y=read();
        sumx+=x;
        sumy+=y;
    }
    double xx=(1.0)*(sumx/n);
    double yy=(1.0)*(sumy/n);
    if(int(xx)==xx&&int(yy)==yy){
        cout<" "<endl;
    }
    else{
        printf("There is not a place like that.\n");
    }
} 
View Code

 

你可能感兴趣的:(环绕膜拜 (round))