Wannafly挑戰賽26 御阪網路
阿新 • • 發佈:2019-01-01
御阪網路
時間限制: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; }