커피 전문점

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

요약
각 질의 반경 m에 대해 맨해튼 거리 m 이내에 가장 많은 커피숍이 있는 격자 교차점을 찾고, 동점이면 y가 가장 작은 곳, 그다음 x가 가장 작은 곳을 출력한다.
난이도

어려움10점 중 8점

유형
누적 합, 기하, 완전 탐색, 구현
정답자
아직 제출이 없습니다

문제

어떤 동네에 커피 전문점이 여러 곳 있다. 이 동네는 정사각형 격자 모양이고, 모든 길은 남북 방향 또는 동서 방향으로 나 있어 교차로들이 격자점을 이룬다.

두 교차로 (a,b)(a, b)와 (c,d)(c, d) 사이의 거리는 맨해튼 거리 ∣a−c∣+∣b−d∣|a - c| + |b - d|이며, 이는 한 교차로에서 다른 교차로로 오갈 때 지나야 하는 블록의 수와 같다.

모든 커피 전문점의 위치가 주어지고 걸어서 갈 수 있는 블록 수의 상한 mm이 정해질 때, 어떤 교차로로부터 mm블록 이내에 있는 커피 전문점의 개수가 가장 많아지는 교차로를 찾는 프로그램을 작성하시오. 후보가 되는 교차로는 도시 안의 격자점, 즉 1≤x≤dx1 \le x \le dx이고 1≤y≤dy1 \le y \le dy인 (x,y)(x, y)이다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 하나의 도시를 나타낸다.

각 테스트 케이스의 첫째 줄에는 네 정수 dxdx, dydy, nn, qq가 주어진다. 도시의 크기는 dx×dydx \times dy (1≤dx,dy≤10001 \le dx, dy \le 1000)이고, 도시에 있는 커피 전문점의 수는 nn (0≤n≤5⋅1050 \le n \le 5 \cdot 10^5), 질의의 수는 qq (1≤q≤201 \le q \le 20)이다.

이어지는 nn개의 줄에는 두 정수 xix_i와 yiy_i (1≤xi≤dx1 \le x_i \le dx, 1≤yi≤dy1 \le y_i \le dy)가 주어지며, 이는 ii번째 커피 전문점의 위치를 나타낸다. 한 교차로에 있는 커피 전문점은 최대 한 개이다.

그 다음 qq개의 줄에는 정수 mm이 한 줄에 하나씩 주어진다. mm (0≤m≤1060 \le m \le 10^6)은 걸어서 갈 수 있는 블록 수의 최대값이다.

입력의 마지막 줄에는 정수 00이 네 개 주어지며, 이는 입력의 끝을 의미한다.

출력

각 테스트 케이스마다 먼저 Case k: 형식으로 테스트 케이스 번호 kk를 출력한다(kk는 11부터 시작한다). 그 다음 각 질의마다 한 줄씩 출력하는데, 그 질의의 mm에 대해 어떤 교차로로부터 mm블록 이내에 있는 커피 전문점의 최대 개수와 그 개수를 달성하는 교차로의 위치를 개수 (x,y) 형식으로 출력한다.

최대 개수를 달성하는 교차로가 여러 개라면 가장 남쪽에 있는 것(즉 yy좌표가 가장 작은 것)을 출력하고, 그래도 여러 개라면 가장 서쪽에 있는 것(즉 xx좌표가 가장 작은 것)을 출력한다.

예제1

  1. 예제 1

    입력
    4 4 5 3
    1 1
    1 2
    3 3
    4 4
    2 4
    1
    2
    4
    0 0 0 0
    
    예상 출력
    Case 1:
    3 (3,4)
    4 (2,2)
    5 (3,1)