로봇 수리 창고 배치

면접 대비

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

요약
평면 어디든 최대 c개의 수리소를 세워 n개(최대 16개) 로봇 각각에서 가장 가까운 수리소까지의 거리 중 최댓값을 최소로 만들고, 그 거리를 소수점 여섯 자리로 출력한다.
난이도

어려움10점 중 8점

유형
이분 탐색, 기하, 완전 탐색, 구현
정답자
아직 제출이 없습니다

문제

로보코프 오리건(RoboCorp Oregon)은 주 전역에 여러 대의 폴리스봇(PoliceBot)을 배치했고, 이제 고장 난 로봇을 수리할 수 있기를 원한다. 회사는 한정된 개수의 수리 창고만 지을 수 있으며, 모든 로봇이 어느 창고엔가 가깝도록 창고들을 배치하려고 한다.

배치된 폴리스봇 nn대(1≤n≤161 \le n \le 16)의 위치와, 지을 수 있는 수리 창고의 최대 개수 cc(1≤c≤n1 \le c \le n)가 주어진다. 각 창고는 평면 위 임의의 지점에 놓을 수 있다(로봇이 있는 위치로 제한되지 않는다). 각 로봇은 자신과 가장 가까운 창고에서 수리를 받으며, 어떤 로봇이든 어떤 창고에서나 수리할 수 있다. 창고를 최대 cc개 배치하여, 임의의 로봇에서 가장 가까운 창고까지의 거리 중 최댓값을 최소가 되게 하고, 그 최솟값을 출력하라.

입력

첫 줄에 테스트 케이스의 수 tt(1≤t≤3501 \le t \le 350)가 주어진다.

각 테스트 케이스의 첫 줄에는 두 정수 nn과 cc가 주어진다. 이어지는 nn개의 줄에는 각각 로봇 한 대의 좌표를 나타내는 두 실수 xx와 yy(0.0≤x,y≤10.00.0 \le x, y \le 10.0)가 공백으로 구분되어 주어진다. 좌표는 실수이며, 일부는 정수로 표기될 수 있다.

출력

각 테스트 케이스마다, 임의의 로봇에서 가장 가까운 창고까지의 거리의 최댓값을 최소화했을 때의 값을 한 줄에 하나씩 출력한다. 소수점 앞에 최소 한 자리, 소수점 뒤에 정확히 여섯 자리를 출력한다. 출력값은 참값과의 오차가 5×10−75\times10^{-7} 이내여야 한다. 참값의 소수점 아래 일곱 번째 자리는 절대 44 또는 55가 아니므로, 여섯 자리로 반올림하는 것은 항상 명확하다.

예제3

  1. 예제 1

    입력
    2
    9 3
    1 1
    1 2
    1 3
    2 1
    2 2
    2 3
    3 1
    3 2
    3 3
    4 2
    0 0
    1 1
    2 4
    3 9
    
    예상 출력
    1.000000
    2.236068
    
  2. 예제 2

    입력
    1
    1 1
    5.0 5.0
    
    예상 출력
    0.000000
    
  3. 예제 3

    입력
    1
    2 1
    0.0 0.0
    6.0 8.0
    
    예상 출력
    5.000000