채굴 센터 위치 정하기

면접 대비

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

요약
주어진 지점들까지의 맨해튼 거리 최댓값이 최소가 되도록 정수 좌표에 중심을 놓고, 원점까지의 유클리드 거리와 사전순으로 동점을 깬다.
난이도

보통10점 중 7점

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

문제

외딴 무인 지역에서 여러 개의 후보 채굴 지점이 조사되었고, 이제 채굴 센터(Mining Center)를 어디에 둘지 정해야 합니다. 로봇은 각 채굴 지점에서 채굴 센터까지 광물을 운반하지만, 그림에 표시된 미리 정해진 격자선(grid line)을 따라서만 이동할 수 있습니다. 따라서 두 지점 사이의 이동 비용은 두 점의 직각 거리(맨해튼 거리, rectilinear / Manhattan distance)와 같습니다. 채굴 센터에서 각 채굴 지점까지의 거리 중 최댓값이 가능한 한 작아지도록 센터의 위치를 정해야 합니다.

정확히 말하면, nn개의 채굴 지점의 좌표 (x1,y1),(x2,y2),…,(xn,yn)(x_1, y_1), (x_2, y_2), \dots, (x_n, y_n)가 주어집니다. 채굴 센터의 정수 좌표 (x0,y0)(x_0, y_0)를

max⁡1≤i≤n(∣xi−x0∣+∣yi−y0∣)\max_{1 \le i \le n} \left( |x_i - x_0| + |y_i - y_0| \right)

가 최소가 되도록 정하세요. 여기서 (x0,y0)(x_0, y_0)와 (xi,yi)(x_i, y_i) 사이의 직각 거리는 ∣xi−x0∣+∣yi−y0∣|x_i - x_0| + |y_i - y_0|입니다.

이 최솟값을 달성하는 위치가 여러 개라면, 원점 (0,0)(0, 0)에 가장 가까운 위치, 즉 x02+y02\sqrt{x_0^2 + y_0^2}가 가장 작은 위치를 고르세요. 유클리드 거리까지 같은 위치가 여러 개라면, 좌표쌍 (x0,y0)(x_0, y_0)가 사전순으로 가장 작은 것을 고르세요. 즉 x0x_0가 더 작은 것을 먼저, x0x_0가 같으면 y0y_0가 더 작은 것을 고릅니다.

모든 좌표는 정수입니다. 좌표 값은 매우 클 수 있으므로(수백만 이상), 후보 위치를 전부 훑는 완전 탐색으로는 풀 수 없습니다.

채굴 센터 격자

입력

첫 줄에는 테스트 케이스의 개수 TT가 주어집니다.

이어지는 TT개의 줄에는 각각 하나의 테스트 케이스가 주어집니다. 각 줄은 채굴 지점의 개수 nn으로 시작하고, 그 뒤에 각 지점의 좌표 x1 y1 x2 y2 … xn ynx_1\ y_1\ x_2\ y_2\ \dots\ x_n\ y_n이 이어집니다. 모든 좌표는 정수이며, 값이 매우 클 수 있습니다(수백만 이상).

출력

각 테스트 케이스마다 한 줄에

LOCATION x0 y0

를 출력하세요. 여기서 (x0,y0)(x_0, y_0)는 위 규칙에 따라 정해진 채굴 센터의 정수 좌표입니다. 즉 가능한 직각 거리의 최댓값이 최소, 그다음 원점까지의 유클리드 거리가 최소, 그다음 사전순으로 가장 작은 (x0,y0)(x_0, y_0)입니다.

예제4

  1. 예제 1

    입력
    2
    4 100 0 40 0 -10 0 20 0
    3 245 692 -772 -647 330 526
    
    예상 출력
    LOCATION 45 0
    LOCATION -121 -120
    
  2. 예제 2

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

    입력
    1
    1 5 7
    
    예상 출력
    LOCATION 5 7
    
  4. 예제 4

    입력
    1
    2 0 0 1 1
    
    예상 출력
    LOCATION 0 1