아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

안전 구역

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

요약
축에 나란한 광산 지대와 최대 300개의 지뢰가 주어질 때, 짧은 변이 가장 긴 지뢰 없는 직사각형을 찾고 그다음 긴 변이 가장 긴 것을 찾는다.
난이도

어려움10점 중 8점

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

문제

지뢰밭이 좌표축에 평행한 직사각형 경계와 그 안에 놓인 모든 지뢰의 위치로 주어진다. 헬리콥터가 착륙할 가장 안전한 구역을 찾아야 한다. 이 구역은 밭 안에 들어가고, 내부에 지뢰가 하나도 없으며, 짧은 변의 길이가 가능한 한 긴 좌표축 평행 직사각형이다.

형식적으로, 밭 안에 있으면서 내부에 지뢰가 전혀 없는 모든 좌표축 평행 직사각형을 생각하자. 그 두 변의 길이를 AA, BB(A≤BA \le B)라 하면, 가장 안전한 구역은 AA가 가능한 한 큰 직사각형이고, 그러한 최대 AA를 달성하는 직사각형들 중에서는 BB가 가장 큰 것이다.

직사각형의 변이나 꼭짓점(경계) 위에 정확히 놓인 지뢰는 그 직사각형의 내부에 있는 것으로 세지 않는다.

밭의 경계 직사각형과 모든 지뢰의 위치가 주어질 때, 가장 안전한 구역의 두 변의 길이를 구하라.

입력

입력은 여러 개의 지뢰밭으로 이루어진다.

각 지뢰밭은 다음과 같이 주어진다. 첫 줄에는 네 정수 X1X_1, Y1Y_1, X2X_2, Y2Y_2가 주어지며, (X1,Y1)(X_1, Y_1)은 밭의 왼쪽 아래 꼭짓점, (X2,Y2)(X_2, Y_2)는 오른쪽 위 꼭짓점이다 (−20000≤X1<X2≤20000-20000 \le X_1 < X_2 \le 20000, −20000≤Y1<Y2≤20000-20000 \le Y_1 < Y_2 \le 20000). 다음 줄에는 지뢰의 개수 NN(1≤N≤3001 \le N \le 300)이 주어진다. 이어지는 NN개의 줄에는 각각 지뢰의 위치를 나타내는 두 정수 XX, YY가 주어진다(X1≤X≤X2X_1 \le X \le X_2, Y1≤Y≤Y2Y_1 \le Y \le Y_2). 같은 위치에 두 개의 지뢰가 놓이는 경우는 없다.

입력의 끝은 X1=Y1=X2=Y2=0X_1 = Y_1 = X_2 = Y_2 = 0인 줄로 표시되며, 이 줄은 처리하지 않는다.

출력

각 지뢰밭에 대해, 가장 안전한 구역의 두 변의 길이를 나타내는 두 정수 AA, BB(A≤BA \le B)를 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    0 0 100 100
    9
    0 0
    0 100
    100 0
    100 100
    50 50
    25 50
    50 25
    75 50
    50 75
    -2 0 6 8
    3
    0 2
    2 4 
    4 6 
    0 0 0 0
    
    예상 출력
    50 50
    4 6
    
  2. 예제 2

    입력
    0 0 10 10
    1
    5 5
    0 0 0 0
    
    예상 출력
    5 10
    
  3. 예제 3

    입력
    0 0 20 10
    1
    5 5
    0 0 0 0
    
    예상 출력
    10 15