원룸 구하기

NYPC 2021 · 예선

올해 대학에 입학한 에띠는 대학 근처 대학로에 원룸을 구하기로 하였다. 무엇보다 원룸의 위치를 중요하게 생각하는 에띠는 생활에 필수적인 편의점, 마트, 빨래방, PC방 등 KK 종류의 가게가 가장 가까운 곳에 살고 싶어한다. 각 가게의 종류는 11부터 KK 사이의 정수로 표현할 수 있다.

대학로는 길게 뻗은 직선 형태의 도로이며, 각 가게의 위치는 이 직선 위의 정수로 주어진다. 두 지점 사이의 거리는 위치의 차이이다.

에띠는 대학로에 있는 총 NN 곳의 가게의 위치를 알아내었고, 입주 가능한 원룸의 위치 MM 곳의 위치도 알아내었다. 에띠는 자신의 요구를 합리적으로 계산하기 위해서, 각 원룸 위치의 필수 생활 거리를 다음과 같이 정의하였다.

위치 xx의 필수 생활 거리는 KK 종류의 가게 모두와 xx를 포함하는 가장 짧은 구간의 길이이다.

예를 들어, N=4N=4, K=2K=2라고 하자. 11번 종류의 가게가 좌표 11, 77에 있고, 22번 종류 가게가 좌표 2,52, 5에 있다고 하자.

NN 개의 가게의 위치와 그 종류, 그리고 MM 개의 원룸의 위치가 주어질 때, 각 원룸의 위치에서 필수 생활 거리를 구하라.

입력 형식

첫 줄에 가게의 수를 나타내는 정수 NN, 가게의 종류를 나타내는 정수 KK, 원룸의 수를 나타내는 정수 MM이 공백으로 구분되어 주어진다. (1N,K,M5000001 \le N, K, M \le 500\,000)

다음 NN 개의 줄은 가게에 대한 정보를 나타낸다. 각 줄에는 두 정수 pptt가 공백으로 구분되어 주어진다. 이는 좌표 pp에 종류 tt인 가게가 있다는 뜻이다. (1000000000p1000000000;-1\,000\,000\,000 \le p \le 1\,000\,000\,000; 1tK1 \le t \le K)

다음 MM 개의 줄에 걸쳐, 각 원룸에 대한 정보를 나타내는 정수 xx가 주어진다. 이중 ii 번째 줄에 주어지는 수 xxii 번째 원룸의 좌표를 의미한다. (1000000000x1000000000-1\,000\,000\,000 \le x \le 1\,000\,000\,000)

KK 종류의 가게가 적어도 하나가 존재하도록 입력이 주어지며, 한 위치에 가게가 여러 개 있을 수 있고, 가게가 있는 위치에 원룸이 있을 수 있다.

출력 형식

MM 개의 줄에 걸쳐, ii 번째 줄에 ii 번째 원룸의 필수 생활 거리를 출력한다.

예제

입력

4 2 3 1 1 2 2 5 2 7 1 3 4 9

출력

2 3 4

예제 설명

<그림 1> 입력 예제
<그림 1> 입력 예제

예제는 본문에서 주어진 것에 원룸의 위치가 99에 있는 경우가 추가되었다. 원룸의 위치가 33, 44인 경우는 본문에서 설명하였으며, 각각 필수 생활 거리가 22, 33이다. 원룸의 위치가 99에 있는 경우, 이 원룸과 두 가지 종류의 가게를 모두 포함하는 가장 짧은 구간은 [5,9][5, 9]이고, 필수 생활 거리는 95=49-5=4이다.

채점 방식

입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞추어야 그 종류에 배정된 점수를 받을 수 있다.

종류 1: 13

N,K,M500N, K, M \le 500

종류 2: 21

N,K,M5000N, K, M \le 5\,000

종류 3: 15

K10K \le 10

종류 4: 51

추가적인 제한 조건이 없음.

해설