結果
問題 |
No.2602 Real Collider
|
ユーザー |
|
提出日時 | 2024-01-12 22:09:47 |
言語 | Ruby (3.4.1) |
結果 |
WA
|
実行時間 | - |
コード長 | 898 bytes |
コンパイル時間 | 194 ms |
コンパイル使用メモリ | 7,552 KB |
実行使用メモリ | 77,312 KB |
最終ジャッジ日時 | 2024-09-27 22:35:44 |
合計ジャッジ時間 | 47,646 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 65 WA * 13 |
コンパイルメッセージ
Syntax OK
ソースコード
Q=gets.to_i Inputs=gets(p).split.map(&:to_r) def read() x,y=Inputs.shift(2) return x+y*1i end def assert(f) raise "Error" unless f end x=[read(),read(),read()] assert(x.uniq.size==3) def cross(a,b) return a.real*b.imag-a.imag*b.real end def parallel(a,b) return cross(a,b)==0 end o=r=nil if parallel(x[1]-x[0],x[2]-x[0]) maxr=0 x.combination(2).each{|a,b| d=(b-a).abs2 if maxr<d maxr=d r=d/4 o=(a+b)/2 end } assert(x.map{|t|(o-t).abs2}.max==r) else def line(x,y) a1=(x+y)/2 t=y-x a2=Complex(a1.real-t.imag,a1.imag+t.real) return a1,a2 end a1,a2=line(x[0],x[1]) b1,b2=line(x[0],x[2]) d1=cross(a2-a1,b1-a1) d2=-cross(a2-a1,b2-a1) assert(d1+d2!=0) o=b1+(b2-b1)*(d1/(d1+d2)) r=x.map{|x|(x-o).abs2} assert(r.uniq.size==1) r=r.max end assert(Inputs.size==2*Q) Q.times{ d=(o-read()).abs2 puts d<=r ? "Yes" : "No" }