만드는 중입니다

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

가장 가까운 점까지의 거리

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

요약
N개의 점 각각에 대해 다른 점까지의 맨해튼 거리 중 최솟값을 출력한다.
난이도

어려움10점 중 8점

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

문제

두 점 A(x1,y1)A(x_1, y_1)과 B(x2,y2)B(x_2, y_2) 사이의 거리 D(A,B)D(A, B)를 다음과 같이 정의한다.

D(A,B)=∣x1−x2∣+∣y1−y2∣D(A, B) = |x_1 - x_2| + |y_1 - y_2|

점 NN개 A1,A2,…,ANA_1, A_2, \dots, A_N이 주어진다. 각각의 점 AiA_i마다 자신을 제외한 나머지 점 가운데 가장 가까운 점 AjA_j를 찾아 그 거리 D(Ai,Aj)D(A_i, A_j)를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 점의 개수 NN이 주어진다. (2≤N≤2×1052 \le N \le 2 \times 10^5)

둘째 줄부터 NN개 줄에 걸쳐 점 AiA_i의 좌표 xx와 yy가 공백을 사이에 두고 주어진다. (−107≤x,y≤107-10^7 \le x, y \le 10^7) 좌표는 모두 정수이다. 좌표가 완전히 같은 점이 둘 이상 들어오기도 하며, 그런 두 점 사이의 거리는 00이다.

출력

A1A_1부터 ANA_N까지 입력에 주어진 순서대로, 각 점에서 가장 가까운 점까지의 거리를 한 줄에 하나씩 출력한다.

예제4

  1. 예제 1

    입력
    4
    0 0
    0 1
    1 0
    1 1
    
    예상 출력
    1
    1
    1
    1
    
  2. 예제 2

    입력
    4
    0 0
    1 100
    4 3
    100 2
    
    예상 출력
    7
    100
    7
    97
    
  3. 예제 3

    입력
    4
    0 0
    3 3
    1 100
    100 1
    
    예상 출력
    6
    6
    99
    99
    
  4. 예제 4

    입력
    2
    -10000000 -10000000
    10000000 10000000
    
    예상 출력
    40000000
    40000000