結果
| 問題 |
No.2602 Real Collider
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-01-12 22:12:11 |
| 言語 | Ruby (3.4.1) |
| 結果 |
AC
|
| 実行時間 | 1,592 ms / 2,000 ms |
| コード長 | 860 bytes |
| コンパイル時間 | 528 ms |
| コンパイル使用メモリ | 7,296 KB |
| 実行使用メモリ | 77,312 KB |
| 最終ジャッジ日時 | 2024-09-27 22:39:57 |
| 合計ジャッジ時間 | 52,535 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 78 |
コンパイルメッセージ
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=0+0i
r=10**20
if !parallel(x[1]-x[0],x[2]-x[0])
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
x.combination(2).each{|a,b|
no=(a+b)/2
nr=(a-b).abs2/4
if nr<r&&x.all?{|t|(no-t).abs2<=nr}
o,r=no,nr
end
}
assert(Inputs.size==2*Q)
Q.times{
d=(o-read()).abs2
puts d<=r ? "Yes" : "No"
}