안전지대
시간 제한8초메모리 제한512 MB
직사각형 화면과 원형 기계의 반지름, 그리고 두께를 가진 레이저 직선들이 주어질 때, 모든 빔을 피할 수 있는 원 중심이 존재하는지 판정한다.
문제
슈팅 게임의 한 장면을 판정한다. 화면은 왼쪽 아래 꼭짓점이 이고 오른쪽 위 꼭짓점이 인 직사각형이다. 플레이어가 조종하는 기체는 반지름 인 원이고, 항상 화면 안에 완전히 들어 있어야 한다.
적은 화면 밖에서 레이저를 쏜다. 레이저가 나가기 몇 초 전에 경고선이 먼저 그려지므로 레이저가 지나갈 자리를 미리 알 수 있다. 번째 경고선은 서로 다른 두 점 과 를 지나는 무한 직선이고, 그 선을 따라 발사된 레이저는 직선까지의 거리가 이하인 점을 모두 덮는다.
기체가 레이저와 겹치면 파괴된다. 그래서 중심이 인 기체가 살아남는 자리는 다음 두 조건을 모두 만족하는 자리다.
- 이고 이다.
- 모든 에 대해 에서 번째 직선까지의 거리가 이상이다.
이런 자리가 하나라도 있으면 화면에 안전지대가 있다고 한다. 경고선과 기체의 반지름이 주어질 때 안전지대가 있는지 판정하라.
입력
입력은 여러 데이터 세트로 이루어진다. 각 데이터 세트의 형식은 다음과 같다.
W H N R
x1,1 y1,1 x1,2 y1,2 t1
x2,1 y2,1 x2,2 y2,2 t2
...
xN,1 yN,1 xN,2 yN,2 tN
첫 줄에는 네 정수 , , , 이 주어진다 (, , , ). 와 는 화면의 너비와 높이, 은 레이저의 개수, 은 기체의 반지름이다.
이어지는 개 줄 가운데 번째 줄에는 번째 경고선이 지나는 서로 다른 두 점의 좌표와 그 레이저의 두께 가 정수로 주어진다 (). 좌표는 모두 화면 위의 정수 좌표다 (, ). 기체의 중심은 정수가 아닌 좌표에 놓아도 된다.
데이터 세트는 50개 이하이고, 입력의 마지막 줄에는 0 0 0 0이 주어진다. 이 줄은 처리하지 않는다.
각 데이터 세트에서 기체의 반지름이 만큼 커져도 답은 바뀌지 않는다.
출력
각 데이터 세트마다 안전지대가 있으면 Yes를, 없으면 No를 한 줄에 출력한다.