만드는 중입니다

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

두 개의 직사각형 링

시간 제한2초메모리 제한2048 MB

요약
정수 좌표의 점 n개가 주어졌을 때, 모든 점을 덮는 두 개의 비관통 직사각형 고리를 찾아 두 고리 너비 중 큰 값의 최솟값을 출력합니다.
난이도

어려움10점 중 10점

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

문제

평면 도형으로서 링은 두 동심원 사이의 영역이다. 이 개념은 어떤 도형에도 확장할 수 있다. 예를 들어 직사각형 링은 두 직사각형 사이의 영역이다. 정확한 정의는 다음과 같다. 여기서 다루는 직사각형은 모두 축에 평행하다. 즉 네 변은 수평 또는 수직이며, 각각 왼쪽, 오른쪽, 위, 아래 변이라고 부른다. 수직 또는 수평 선분도 내부가 빈 직사각형으로 본다.

직사각형 링은 두 직사각형 RR과 R′R' 사이의 닫힌 영역이며, 경계를 포함한다. 이때 다음 두 조건을 모두 만족해야 한다.

  1. R′R'은 RR의 경계를 포함하여 RR에 포함된다.
  2. 다음 네 거리가 모두 같다. RR의 위 변과 R′R'의 위 변 사이의 거리, RR의 왼쪽 변과 R′R'의 왼쪽 변 사이의 거리, RR의 아래 변과 R′R'의 아래 변 사이의 거리, RR의 오른쪽 변과 R′R'의 오른쪽 변 사이의 거리.

두 번째 조건의 거리를 RR과 R′R'이 정의하는 직사각형 링의 너비라고 한다. 아래 그림은 두 직사각형 RR과 R′R'이 정의하는 너비 ww의 직사각형 링 세 개를 보여준다. 첫 번째와 세 번째 그림은 두 극단적인 퇴화 사례다. 첫 번째는 R′=RR' = R인 경우로, 이때 w=0w = 0이며 링은 R′=RR' = R의 경계 그 자체다. 세 번째는 R′R'이 선분인 경우로, 이때 RR 자체가 링이다.

평면 위의 유한한 점 집합 PP가 주어졌을 때, P⊂A_1∪A_2P \subset A\_1 \cup A\_2를 만족하고 두 링의 너비 중 큰 값이 최소가 되는 두 개의 비관통 직사각형 링 A_1A\_1과 A_2A\_2를 찾는 프로그램을 작성하라. 두 직사각형 링이 비관통이라는 것은, 한쪽의 경계가 다른 쪽의 내부와 교차하지 않고, 한쪽의 경계가 다른 쪽의 경계와 엇갈리지 않는다는 뜻이다. 비관통 링끼리는 경계가 맞닿을 수 있다. 이때 두 경계가 만나는 모든 점은 평행한 두 변이 겹치는 구간이거나 모서리 위에 있다.

위 그림은 (a) 점 22개로 이루어진 예시 집합 PP와 (b) PP를 포함하면서 두 링 너비의 최댓값을 최소로 하는 최적의 비관통 직사각형 링 쌍을 보여준다.

입력

첫 줄에 정수 nn(1≤n≤300 0001 \le n \le 300\,000)이 주어진다. nn은 PP에 속한 점의 개수다. 이어지는 nn개의 줄에는 공백으로 구분된 두 정수가 한 줄에 하나씩 주어지며, 이는 PP의 한 점의 좌표다. 각 정수는 −109-10^9 이상 10910^9 이하다. 서로 다른 두 입력 점이 같은 위치에 있는 경우는 없다고 가정해도 된다.

출력

한 줄을 출력한다. 이 줄에는 PP의 모든 점을 포함하는 두 비관통 직사각형 링에서, 두 링의 너비 중 큰 값이 가질 수 있는 최솟값을 정수로 쓴다.

예제2

  1. 예제 1

    입력
    13
    0 1
    1 2
    0 5
    4 6
    5 0
    6 2
    8 3
    11 1
    12 -1
    13 2
    12 4
    10 3
    3 4
    
    예상 출력
    1
    
  2. 예제 2

    입력
    13
    0 1
    1 2
    0 5
    4 6
    5 0
    6 2
    8 3
    11 -2
    12 -4
    13 -1
    12 1
    10 0
    3 4
    
    예상 출력
    2