만드는 중입니다

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

트릭 오어 트릿!

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

요약
각 아이에 대해 맨해튼 거리가 가장 가까운 다른 아이의 번호를 구합니다. 아이는 최대 10만 명이고 좌표는 10억 이하입니다.
난이도

보통10점 중 7점

유형
기하, 정렬, 세그먼트 트리
정답자
아직 제출이 없습니다

문제

할로윈에 아이들이 분장을 하고 사탕을 모으러 집집마다 돌아다니는 것은 흔한 놀이다. 그런데 올해는 문제가 생겨서 거리에 아이가 너무 많이 나왔고, 모든 아이에게 사탕이 돌아가지 않을 수도 있다.

그래서 아이들은 사탕을 더 많이 얻으려고 무리를 짓기로 했다. 하지만 미리 조율할 시간이 없어서, 각 아이는 자신과 가장 가까운 다른 아이를 향해 가기로 했다. 물론 이것이 최선의 전략은 아니다. 예를 들어 아이 A가 B를 향해 가는 동안 B는 이미 C를 향해 출발했을 수도 있다. 그래도 몇몇 무리는 만들어지기를 바랄 뿐이다...

맨해튼 거리에 nn명의 아이가 나왔고, ii번째 아이는 좌표 (xi,yi)(x_i, y_i)의 점에 있다. 두 점 (xi,yi)(x_i, y_i)와 (xj,yj)(x_j, y_j) 사이의 맨해튼 거리는 ∣xi−xj∣+∣yi−yj∣|x_i - x_j| + |y_i - y_j|이다.

도로가 혼잡해지지 않도록, 각 아이에 대해 자신과 가장 가까운 다른 아이의 번호를 구하라. 아이들이 도시에서 움직일 경로를 대략적으로라도 예측할 수 있어야 하기 때문이다.

입력

첫 줄에 도시에 있는 아이의 수 nn이 주어진다 (2≤n≤1052 \leq n \leq 10^5).

이어지는 nn개의 줄에는 ii번째 아이의 좌표 xix_i와 yiy_i가 공백으로 구분되어 주어진다 (0≤xi,yi≤1090 \leq x_i, y_i \leq 10^9).

모든 아이가 서로 다른 점에 있다고 보장되지 않는다. 두 아이의 좌표가 같다면, 두 아이 모두에게 최단 거리는 00이다.

출력

11부터 nn까지의 정수 nn개를 공백으로 구분해 출력하라. ii번째 수는 맨해튼 거리 기준으로 ii번째 아이에게 가장 가까운 아이의 번호이다.

예제2

  1. 예제 1

    입력
    3
    1 1
    3 3
    6 6
    
    예상 출력
    2 1 2
    
  2. 예제 2

    입력
    4
    1 6
    0 4
    3 8
    7 3
    
    예상 출력
    2 1 1 2