다이아몬드
시간 제한1초메모리 제한128 MB
각 Pmin에 대해 어떤 중심에서도 최소 Pmin개 점을 덮는 최소 반지름과, 그 반지름에서의 최대 커버 점 수를 구한다.
문제
개의 행과 개의 열로 이루어진 평면 격자를 생각하자. 이 격자에는 정확히 개의 교차점이 있으며, 각 교차점은 좌표쌍 로 나타낸다. 여기서 은 열(즉 좌표), 은 행(즉 좌표)이다.
이제 서로 다른 개의 교차점에 점 개를 놓는다.
다이아몬드 는 교차점 를 중심으로 하며, 대각선 길이가 인 정사각형을 회전시킨 마름모 모양이다. 반지름 는 인 임의의 정수이다. 이는 곧 중심으로부터 맨해튼 거리가 이하인 모든 점, 즉 를 만족하는 모든 점 를 덮는 것과 같다.
각 에 대하여, 중심을 어느 교차점에 놓더라도 항상 최소 개의 점을 덮는 것이 보장되는 가장 작은 반지름 을 구하라. 다시 말해 은, 모든 중심 위치에 대한 최악의 경우(덮는 점 개수의 최솟값)가 이상이 되게 하는 가장 작은 이다.
은 반지름이 인 다이아몬드 하나가 덮을 수 있는 점의 최대 개수이다.
예를 들어 행 열 격자 위의 다섯 점 , , , , 를 생각하자. 다이아몬드 은 어떤 점도 덮지 않고, 는 한 점을 덮으며, 는 네 점을 덮는다.
입력
첫째 줄에 행의 수 과 열의 수 이 주어진다.
이후 줄들에는 점 개가 주어진다(). 각 점은 좌표와 좌표를 이 순서로 나타내는 두 정수로 주어진다. 점들은 한 줄 또는 여러 줄에 걸쳐 나올 수 있으며, 한 줄 안의 모든 값은 하나 이상의 공백 문자(스페이스 또는 탭)로 구분된다.
, 임을 가정해도 된다. 격자 밖에 있는 점(즉 , , , 또는 )은 유효하지 않으므로 버린다.
출력
먼저 세 열의 제목 Pmin, Rmin(Pmin), Pmax(Pmin)을 담은 머리글 줄을 출력하고, 이어서 조건을 만족하는 각 값마다 한 줄씩 출력한다.
어떤 값에 대해서는, 반지름이 인 다이아몬드가 정확히 개의 점을 덮는 것이 보장될 때에만 , , 의 세 값을 출력한다. 연속한 두 값이 같은 반지름을 가지면(예: ) 더 큰 값만 조건을 만족하므로, 더 작은 값에 대해서는 줄을 출력하지 않는다.
각 값은 해당 열 제목의 마지막 글자에 오른쪽 끝이 맞도록 오른쪽 정렬하며, 열과 열 사이는 두 칸의 공백으로 구분한다.