Wannafly挑战赛26 御坂网络

 链接:https://ac.nowcoder.com/acm/contest/212/A
来源:牛客网
 

御坂网络

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题解:暴力!暴力出奇迹,分别以每一个顶点作为圆心,看剩下的圆心之间的距离是否相同。qwq

题目描述

作为「Misaka Network」的中心司令塔的 LastOrder出事了,为了维持 「Misaka Network」的正常工作,需要临时选出一个Sister作为中心司令塔。

 

为了弥补能力上的不足,对于选出的Sister有一些要求。
具体来说,平面上有 n 个 Sister,问能否找到一个Sister作为中心司令塔,使得其他 Sister 都在以她为圆心的一个圆上,如果找不到这样的Sister,则输出 "-1"(不含引号)。

输入描述:

第一行一个数 n
接下来 n 行,第 i 行两个整数 xi, yi ,表示第 i 个Sister在平面上的坐标。

输出描述:

输出共一个数,表示选出的Sister的编号,如果找不到则输出 "-1"。

示例1

输入

复制

3
1 1
0 1
1 2

输出

复制

1

备注:

3 ≤ n ≤ 1000,-109≤ xi, yi ≤ 109 ,所有坐标互不相同。
#include <iostream>
using namespace std;
typedef long long ll;
const int maxn=1e4+5;
ll a[maxn],b[maxn];
ll d[maxn];
int main(){
    ll n;
    cin>>n;
    for(ll i=1;i<=n;i++){
        cin>>a[i]>>b[i];
    }
    for(ll i=1;i<=n;i++){
        ll num=0;
        for(ll j=1;j<=n;j++){
            if(i!=j)
                d[++num]=(a[i]-a[j])*(a[i]-a[j])+(b[i]-b[j])*(b[i]-b[j]);
        }
        ll flag=1;
        for(ll j=1;j<num;j++){
            if(d[j]!=d[j+1]) flag=0;
            if(flag){
                cout<<i;
                return 0;
            }
        }
    }
    cout<<"-1";
    return 0;
}

 

posted @ 2018-11-24 10:28  UUUUh  阅读(172)  评论(0编辑  收藏  举报