Three Way Communications (COMM3)
keyword
平面幾何 C++
問題概要
2次元平面上に3つの点がある。点は半径R以内にある点と連結する。全ての点が連結しているかどうか判定する問題。
解法
3つのペアの内2組以上が繋がっていたらOK。
感想
codechefにも登録してみた。アカウント作る際に入力必須事項が多くて戸惑った。area pincodeって何だったんだろう。開始時刻丁度に目が覚めて登録してない!と焦ったけどそもそも登録はいらないらしかった。使える言語が豊富で、コンテストはテストケースの個数までちゃんと明記してあるのが良い。
int xs[3], ys[3]; int R; inline int sq(int x){ return x*x; } bool solve(){ int cnt = 0; for(int i=0; i<3; i++){ if(sq(xs[i]-xs[(i+1)%3]) + sq(ys[i]-ys[(i+1)%3]) <= sq(R)) cnt++; } return cnt>=2; } int main(){ int T; scanf("%d",&T); while(T--){ scanf("%d",&R); for(int i=0; i<3; i++){ scanf("%d%d",xs+i,ys+i); } puts(solve()?"yes":"no"); } return 0; }