链接: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;
}