만드는 중입니다

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

정사각형 고리

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

요약
N개의 점을 모두 포함하는 동심 정사각형 고리 중 너비가 최소인 경우를 구합니다.
난이도

보통10점 중 7점

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

문제

정사각형 고리(square annulus)는 중심이 같고 변이 xx축과 yy축에 평행한 두 정사각형 사이에 놓인 영역이다. 즉, 큰 정사각형의 내부(경계 포함)에 있으면서 작은 정사각형의 외부(경계 포함)에 있는 모든 점의 집합이다. 정사각형 고리의 너비는 두 정사각형의 한 변 길이의 차를 절반으로 한 값으로 정의한다.

평면 위에 NN개의 점이 주어진다. 이 NN개의 점을 모두 포함하면서 너비가 최소인 정사각형 고리 AA를 찾고, 그 최소 너비를 구하여라.

다음 사실을 이용할 수 있다. 이는 어느 독일 연구진이 증명한 것이다.

NN개의 점을 포함하는 너비 최소의 정사각형 고리 가운데, 바깥쪽 정사각형이 그 점들을 포함하는 가장 작은 축평행 정사각형인 것이 반드시 존재한다.

따라서 AA의 바깥쪽 정사각형 SS는, NN개의 점을 포함하는 축평행 정사각형 중에서 한 변의 길이 LL이 최소인 것이라고 가정할 수 있다. 즉, 한 변의 길이가 LL보다 작으면서 그 점들을 모두 포함하는 축평행 정사각형은 존재하지 않는다. 한 변의 길이가 LL인 정사각형은 여러 개일 수 있으므로 바깥쪽 정사각형이 유일하지는 않다.

두 정사각형이 완전히 같을 때 너비는 00이 될 수 있고, 안쪽 정사각형이 한 변의 길이가 00인 한 점으로 줄어들 수도 있는데, 이때 너비는 바깥쪽 정사각형 한 변 길이의 절반과 같다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 이어서 각 테스트 케이스가 차례로 주어진다.

각 테스트 케이스의 첫째 줄에는 점의 개수 NN (1≤N≤100,0001 \le N \le 100{,}000)이 주어진다. 다음 NN개의 줄에는 각각 한 점의 xx좌표와 yy좌표를 나타내는 두 정수가 공백 하나로 구분되어 주어진다. 모든 좌표는 −1,000,000-1{,}000{,}000 이상 1,000,0001{,}000{,}000 이하의 정수이다. 연속한 두 테스트 케이스 사이에 빈 줄은 없다.

출력

각 테스트 케이스마다, 해당 테스트 케이스의 NN개의 점을 모두 포함하는 축평행 정사각형 고리의 최소 너비를 한 줄에 출력한다. 값은 소수점 아래 한 자리까지 출력하며, 필요하면 소수점 아래 둘째 자리에서 반올림한다.

예제5

  1. 예제 1

    입력
    2
    11
    -2 -2
    1 -4
    3 -3
    6 -2
    5 1
    6 6
    2 5
    -3 1
    -2 5
    -2 8
    1 7
    12
    -11 0
    15 -4
    10 -13
    5 -12
    -4 19
    0 17
    8 30
    -10 -23
    -9 -17
    6 27
    -8 23
    -11 -8
    
    예상 출력
    3.0
    13.5
    
  2. 예제 2

    입력
    1
    1
    0 0
    
    예상 출력
    0.0
    
  3. 예제 3

    입력
    1
    5
    0 0
    10 0
    0 10
    10 10
    5 5
    
    예상 출력
    5.0
    
  4. 예제 4

    입력
    1
    5
    -3 3
    1 -4
    5 0
    -5 4
    -4 -5
    
    예상 출력
    1.5
    
  5. 예제 5

    입력
    1
    5
    -10 0
    10 0
    0 5
    -3 -2
    4 3
    
    예상 출력
    6.5