만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

로봇 충돌

시간 제한8초메모리 제한512 MB

요약
두 가지 반대 속도로 움직이는 로봇들이 있을 때 두 중심 사이 거리가 2r보다 작아지는 가장 이른 시각을 구하고, 그런 충돌이 없으면 SAFE를 출력합니다.
난이도

보통10점 중 7점

유형
기하, 시뮬레이션, 정렬
정답자
아직 제출이 없습니다

문제

xy평면 위에 반지름이 rr인 원 모양 로봇 nn대가 서로 겹치지 않게 놓여 있다. 시각 0에 모든 로봇이 동시에 출발한다. 각 로봇의 속도는 (vx,vy)(v_x, v_y)와 (−vx,−vy)(-v_x, -v_y) 중 하나이고, 로봇은 방향을 바꾸지 않고 계속 직진한다.

두 로봇의 중심 사이 거리가 2r2r보다 가까워지면 두 로봇이 충돌한 것이다. 충돌이 일어나는지 판정하고, 일어난다면 가장 이른 충돌 시각, 즉 어떤 두 중심 사이 거리가 처음으로 2r2r이 되는 시각을 구하라.

입력

입력은 여러 개의 데이터셋으로 이루어진다. 각 데이터셋의 형식은 다음과 같다.

n
vx vy
r
rx1 ry1 u1
rx2 ry2 u2
...
rxn ryn un

nn은 로봇의 수다 (2≤n≤1000002 \le n \le 100000). (vx,vy)(v_x, v_y)는 속도 벡터이고, vxv_x와 vyv_y는 모두 −1-1 이상 11 이하다. rr은 로봇의 반지름이며 양의 실수다. (rxi,ryi)(rx_i, ry_i)는 ii번 로봇 중심의 좌표이고, 모든 좌표는 −1200-1200 이상 12001200 이하다. uiu_i가 11이면 ii번 로봇은 속도 (vx,vy)(v_x, v_y)로, −1-1이면 (−vx,−vy)(-v_x, -v_y)로 움직인다.

모든 로봇 쌍은 다음 세 조건을 만족한다.

  • 시각 0에서 두 중심 사이 거리가 2r+10−82r + 10^{-8}보다 가깝지 않다.
  • 충돌하는 쌍이면 두 중심 사이 거리가 어느 순간 2r−10−82r - 10^{-8}보다 작아진다.
  • 충돌하지 않는 쌍이면 두 중심 사이 거리가 항상 2r+10−82r + 10^{-8} 이상이다.

모든 데이터셋의 nn을 더한 값은 200000 이하다. 충돌이 일어나는 데이터셋에서 가장 이른 충돌 시각은 10610^6 미만이다. 입력의 마지막 줄에는 0 하나만 주어지며, 이 줄은 처리하지 않는다.

출력

각 데이터셋마다 한 줄씩 출력한다. 충돌하는 쌍이 있으면 가장 이른 충돌 시각을 소수점 아래 여섯째 자리까지 반올림해 출력하고, 소수점 아래 여섯 자리를 모두 적는다. 충돌하는 쌍이 하나도 없으면 SAFE를 출력한다.

예제2

  1. 예제 1

    입력
    2
    1.0 0.0
    0.5
    0.0 0.0 1
    2.0 0.0 -1
    2
    1.0 0.0
    0.5
    0.0 0.0 -1
    2.0 0.0 1
    0
    
    예상 출력
    0.500000
    SAFE
    
  2. 예제 2

    입력
    2
    1.0 0.0
    0.5
    0.0 0.0 1
    5.0 0.6 -1
    2
    1.0 0.0
    0.5
    0.0 0.0 1
    5.0 1.2 -1
    0
    
    예상 출력
    2.100000
    SAFE