아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

허블 우주 망원경

시간 제한1초메모리 제한128 MB

요약
알파별과 나머지 별들의 초기 위치와 속도가 주어질 때 알파별과의 최대 거리가 가장 작아지는 0 이상 100000 이하의 가장 이른 시각을 구합니다.
난이도

보통10점 중 6점

유형
이분 탐색, 기하, 수학
정답자
아직 제출이 없습니다

문제

한 천체물리학자가 허블 우주 망원경으로 나선 은하인 안드로메다 은하를 관측한다. 그는 이 은하에 있는 별 nn개의 움직임에 관심이 있다. 각 별은 망원경 사진 속에서 일정한 속도로 직선을 따라 움직인다. nn개의 별 중 하나는 특별한 별로, 이름은 알파(alpha)이다. 그는 알파에서 나머지 n−1n - 1개의 별까지의 거리 중 최댓값이 가장 작아지는 시각을 알고 싶어 한다.

사진은 2차원 직교 좌표평면으로 나타낼 수 있다. S={s0,s1,…,sn−1}S = \{s_0, s_1, \dots, s_{n-1}\}을 nn개의 별의 집합이라 하고, s0s_0을 별 알파라고 하자. 별 sis_i는 시간 tt에 따라 궤적 pi+t vip_i + t\,v_i를 따라 움직인다. 여기서 pi=(xi,yi)p_i = (x_i, y_i)는 시각 00에서 sis_i의 위치이고, vi=(ai,bi)v_i = (a_i, b_i)는 sis_i의 속도 벡터이다. 별들은 실제로 충돌하지 않는다. 두 별이 한 점에서 만나더라도 서로를 그대로 통과한다.

별들과 그 속도가 주어질 때, 0≤t≤1050 \le t \le 10^5 범위에서 알파부터 나머지 별들까지의 최대 거리가 최소가 되는 시각 tt를 구하여라. 그런 시각이 여러 개라면 가장 이른 시각을 출력한다.

그림 1은 별이 44개인 예시를 보여 준다. 각 화살표는 별의 속도 벡터이다. 이 예시에서는 시각 t=3t = 3일 때 알파에서 나머지 33개의 별까지의 최대 거리가 가장 작다.

(a) 시각 t=0t = 0일 때, (b) 시각 t=3t = 3일 때.

그림 1. 예시.

입력

입력은 표준 입력으로 주어진다. 첫째 줄에 테스트 케이스의 수 TT가 주어진다. 각 테스트 케이스의 첫째 줄에는 별의 수를 나타내는 정수 nn (2≤n≤500002 \le n \le 50000)이 주어진다. 이어지는 nn개의 줄에는 각각 네 정수 xix_i, yiy_i, aia_i, bib_i가 주어지며, (xi,yi)(x_i, y_i)는 시각 00에서 별 sis_i의 위치이고 (ai,bi)(a_i, b_i)는 그 속도 벡터이다 (−200000≤xi,yi≤200000-200000 \le x_i, y_i \le 200000, −500≤ai,bi≤500-500 \le a_i, b_i \le 500). 이 nn개의 줄 중 첫째 줄이 알파(s0s_0)를 나타낸다. 둘 이상의 별이 시각 00에서 같은 위치에 있을 수도 있다.

출력

출력은 표준 출력으로 한다. 각 테스트 케이스마다 0≤t≤1050 \le t \le 10^5 범위에서 알파(s0s_0)로부터 나머지 n−1n - 1개의 별까지의 최대 거리가 최소가 되는 시각을 소수점 아래 넷째 자리까지 반올림하여 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    5
    4
    6 12 0 -2
    1 8 3 0
    2 1 0 1
    7 4 -1 1
    2
    1000 1000 -1 0
    -1000 -1000 1 0
    5
    0 0 0 0
    -20000 0 10 0
    19990 0 -10 0
    0 19900 0 -10
    0 -19999 0 10
    8
    -621 -213 3 1
    -875 782 1 -4
    584 700 -5 -2
    -12 -628 3 2
    -771 -460 1 3
    676 57 -1 -2
    420 -864 -2 4
    190 -950 -4 5
    2
    -200000 0 2 0
    200000 0 -2 0
    
    예상 출력
    3.0000
    1000.0000
    1995.0000
    196.4510
    100000.0000