結果

問題 No.2602 Real Collider
ユーザー amentorimaru
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

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')
				

0