시계

면접 대비

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

요약
최대 50개의 서로 겹치지 않는 원을 피하면서 직사각형 벽 안에 완전히 들어가는 가장 큰 빈 원을 구한다. 점, 선분, 원으로 이루어진 일반화 보로노이 다이어그램을 이용한다.
난이도

어려움10점 중 8점

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

문제

희원이는 원형 시계를 모으는 수집가로, 시계들을 모두 거실의 한 벽에 걸어 두었다. 이번에 시계를 하나 더 사서 걸려고 하는데, 이미 걸려 있는 시계들의 위치는 그대로 둔 채 빈 공간에 걸 수 있는 가장 큰 원형 시계를 사고 싶다.

벽은 너비 WW, 높이 HH인 직사각형이다. 걸려 있는 각 시계는 중심이 (xi,yi)(x_i, y_i)이고 반지름이 rir_i인 원이다. 기존 시계들은 벽의 경계 밖으로 나가지 않으며 서로 겹치지도 않는다(다만 서로 맞닿을 수는 있다).

새로 걸 시계도 원 모양이며, 벽의 경계 안에 완전히 들어와야 하고 기존의 어떤 시계와도 겹쳐서는 안 된다(맞닿는 것은 허용된다). 이 조건을 만족하는 시계의 반지름의 최댓값을 구하여라. 이 최대 반지름 값은 유일하게 결정된다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다.

각 테스트 케이스는 다음과 같이 주어진다.

  • 첫째 줄에 벽의 너비와 높이 WW, HH가 주어진다. (1≤W,H≤1061 \le W, H \le 10^6)
  • 둘째 줄에 벽에 걸려 있는 시계의 수 CC가 주어진다. (0≤C≤500 \le C \le 50)
  • 이어지는 CC개의 줄에 각 시계의 정보 xix_i, yiy_i, rir_i가 주어진다. (ri>0r_i > 0, 0≤xi−ri0 \le x_i - r_i, xi+ri≤Wx_i + r_i \le W, 0≤yi−ri0 \le y_i - r_i, yi+ri≤Hy_i + r_i \le H)

서로 다른 모든 시계 쌍 ii, jj (i≠ji \ne j)는 (xi−xj)2+(yi−yj)2≥(ri+rj)2(x_i - x_j)^2 + (y_i - y_j)^2 \ge (r_i + r_j)^2을 만족한다.

출력

각 테스트 케이스마다, 새로 걸 수 있는 가장 큰 시계의 반지름을 소수점 아래 여섯째 자리까지 반올림하여 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    1
    10 10
    4
    2 2 1
    2 8 1
    8 2 1
    8 8 1
    
    예상 출력
    3.242641
    
  2. 예제 2

    입력
    1
    10 10
    0
    
    예상 출력
    5.000000
    
  3. 예제 3

    입력
    1
    1 1
    0
    
    예상 출력
    0.500000