전력 수요

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

요약
최대 20개의 발전소가 있는 거대한 격자에서 빈 칸을 가장 가까운 발전소까지의 체비쇼프 거리 순으로, 같은 거리면 행과 열 순으로 번호를 매기고 특정 순번의 칸을 찾는다.
난이도

어려움10점 중 8점

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

문제

당신은 도시에 새 공장을 지으려고 한다. 이 공장은 전력 수요가 크기 때문에 발전소와 가까운 곳에 두는 것이 중요하다. 그래서 가능한 후보 위치들을 우선순위 순으로 정렬한 목록을 만들려고 한다.

공장을 세울 수 있는 영역은 NN개의 행과 MM개의 열로 이루어진 직사각형 격자이다. 일부 칸에는 발전소가 있다. 공장은 정확히 한 칸을 차지하며, 발전소가 없는 빈 칸이면 어디에나 놓을 수 있다.

행은 위에서부터 11부터 NN까지, 열은 왼쪽에서부터 11부터 MM까지 번호를 매긴다. 칸 (i,j)(i, j)는 ii번째 행, jj번째 열의 칸을 뜻한다. 두 칸 (i0,j0)(i_0, j_0)과 (i1,j1)(i_1, j_1) 사이의 거리는 max⁡(∣i0−i1∣,∣j0−j1∣)\max(|i_0 - i_1|, |j_0 - j_1|)로 정의하며, 여기서 ∣x∣|x|는 xx의 절댓값이다. 한 위치의 전력 우선도는 그 칸에서 가장 가까운 발전소까지의 거리이다.

이제 모든 빈 칸에 11부터 시작하는 연속한 정수를 매긴다. 먼저 전력 우선도가 작은 순서로 매기고, 전력 우선도가 같으면 행 번호가 작은 순서로, 행 번호까지 같으면 열 번호가 작은 순서로 매긴다.

예를 들어 4×74 \times 7 격자에서, 발전소로부터의 거리가 11인 빈 칸들은 모두 전력 우선도 11을 받고, 그 바깥쪽 칸들은 우선도 22를 받는 식이다. 그렇게 우선도를 정한 뒤 위 규칙에 따라 빈 칸에 번호를 매긴다.

이렇게 만든 목록에 대해 여러 개의 질의가 주어진다. 각 질의는 목록에서의 위치(순번)를 주며, 그 순번을 배정받은 칸이 어디인지 답해야 한다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다.

각 테스트 케이스의 첫 줄에는 세 정수 NN, MM, PP가 주어진다. 각각 격자의 행 수, 열 수(1≤N,M≤1091 \le N, M \le 10^9), 발전소의 개수(1≤P≤201 \le P \le 20)이다. 이어지는 PP개의 줄에는 각각 두 정수 RR과 CC가 주어지며, 이는 한 발전소의 행과 열을 나타낸다(1≤R≤N1 \le R \le N, 1≤C≤M1 \le C \le M). 한 테스트 케이스 안에서 모든 발전소의 위치는 서로 다르다. 다음 줄에는 질의의 개수 QQ가 주어진다(1≤Q≤501 \le Q \le 50). 그다음 줄에는 QQ개의 정수 p1,…,pQp_1, \dots, p_Q가 주어지며, 각각 목록에서의 위치이다(1≤pi≤N×M−P1 \le p_i \le N \times M - P).

마지막 테스트 케이스 뒤에는 세 개의 00으로 이루어진 줄(0 0 0)이 오며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 Q+1Q + 1개의 줄을 출력한다. i=1,…,Qi = 1, \dots, Q에 대해 ii번째 줄에는 위치 pip_i를 배정받은 칸의 행과 열, 두 정수를 출력한다. 이 QQ개의 줄 다음에는 하이픈 문자 - 하나만 있는 줄을 출력한다.

예제3

  1. 예제 1

    입력
    4 7 2
    2 5
    4 4
    6
    1 6 11 16 21 26
    1000000000 1000000000 1
    1 1
    1
    999999999999999999
    0 0 0
    
    예상 출력
    1 4
    3 3
    4 5
    2 7
    4 7
    4 1
    -
    1000000000 1000000000
    -
    
  2. 예제 2

    입력
    5 5 1
    3 3
    24
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
    0 0 0
    
    예상 출력
    2 2
    2 3
    2 4
    3 2
    3 4
    4 2
    4 3
    4 4
    1 1
    1 2
    1 3
    1 4
    1 5
    2 1
    2 5
    3 1
    3 5
    4 1
    4 5
    5 1
    5 2
    5 3
    5 4
    5 5
    -
    
  3. 예제 3

    입력
    1 10 2
    1 3
    1 8
    8
    1 2 3 4 5 6 7 8
    0 0 0
    
    예상 출력
    1 2
    1 4
    1 7
    1 9
    1 1
    1 5
    1 6
    1 10
    -