結果
問題 |
No.2602 Real Collider
|
ユーザー |
![]() |
提出日時 | 2023-10-25 22:41:54 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 131 ms / 2,000 ms |
コード長 | 1,474 bytes |
コンパイル時間 | 366 ms |
コンパイル使用メモリ | 82,520 KB |
実行使用メモリ | 77,184 KB |
最終ジャッジ日時 | 2024-09-26 03:22:46 |
合計ジャッジ時間 | 11,749 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 78 |
ソースコード
import sys input = sys.stdin.readline def read_values(): return tuple(map(int, input().split())) def read_list(): return list(read_values()) def area(x1,y1,x2,y2,x3,y3): return x1*y2+x2*y3+x3*y1-y2*x3-y3*x1-y1*x2 q=int(input()) xa,ya,xb,yb,xc,yc=read_values() sqa = (xb - xc) * (xb - xc) + (yb - yc) * (yb - yc) sqb = (xc - xa) * (xc - xa) + (yc - ya) * (yc - ya) sqc = (xa - xb) * (xa - xb) + (ya - yb) * (ya - yb) if sqb>=sqa and sqb>=sqc: xa,xb,ya,yb=xb,xa,yb,ya elif sqc>=sqa and sqc>=sqb: xa,xc,ya,yc=xc,xa,yc,ya sqa = (xb - xc) * (xb - xc) + (yb - yc) * (yb - yc) sqb = (xc - xa) * (xc - xa) + (yc - ya) * (yc - ya) sqc = (xa - xb) * (xa - xb) + (ya - yb) * (ya - yb) if sqa>=sqb+sqc: for _ in range(q): xi,yi=read_values() bd=(xb - xi) * (xb - xi) + (yb - yi) * (yb - yi); cd=(xc - xi) * (xc - xi) + (yc - yi) * (yc - yi); if bd+cd<=sqa: print('Yes') else: print('No') else: a1=area(xb,yb,xc,yc,xa,ya) num=(xb - xa) * (xc - xa) + (yb - ya) * (yc - ya) num*=num dem=sqb*sqc for _ in range(q): xi,yi=read_values() bd=(xb - xi) * (xb - xi) + (yb - yi) * (yb - yi); cd=(xc - xi) * (xc - xi) + (yc - yi) * (yc - yi); inner=(xb - xi) * (xc - xi) + (yb - yi) * (yc - yi) numi=inner*inner demi=bd*cd ai=area(xb,yb,xc,yc,xi,yi) if a1*ai>=0: if inner < 0 or numi * dem <= num * demi: print('Yes') else: print('No') else: if inner <= 0 and numi * dem >= num * demi: print('Yes') else : print('No')