만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

가장 긴 최단 경로

시간 제한2초메모리 제한1024 MB

요약
평면에 놓인 직사각형들과 수직 선분 S, T가 주어질 때, S 위의 점과 T 위의 점 사이 최단 경로 길이의 최댓값을 구합니다.
난이도

어려움10점 중 8점

유형
기하, 그래프, 최단 경로, 정렬
정답자
아직 제출이 없습니다

문제

평면 위에 축에 평행한 직사각형 nn개와 수직 선분 SS, TT가 있다. 직사각형과 선분의 모든 꼭짓점은 정수 좌표에 있다. 직사각형과 선분은 서로 떨어져 있어서, 두 도형이 교차하지도 않고 경계 점을 공유하지도 않는다. 선분 SS 위의 점 pp와 선분 TT 위의 점 qq에 대해, pp와 qq를 잇는 경로는 수평 또는 수직 선분들을 이은 연결선이며, 직사각형의 내부와 교차하지 않는다. 경로의 길이는 그 경로를 이루는 선분 길이의 합이다. pp와 qq 사이의 최단 경로는 pp와 qq 사이의 모든 경로 중 길이가 가장 짧은 경로이다.

SS 위의 점과 TT 위의 점에 대해, 두 점을 잇는 최단 경로는 항상 존재한다. d(p,q)d(p, q)는 SS 위의 점 pp와 TT 위의 점 qq를 잇는 최단 경로의 길이를 뜻한다. 구하려는 값은 SS 위의 점과 TT 위의 점을 잇는 최단 경로들 중 가장 긴 경로의 길이, 즉 max⁡_p∈Smax⁡_q∈Td(p,q)\displaystyle\max\_{p ∈ S}\max\_{q ∈ T}d(p,q)이다.

(a)(b)

그림 (a)에는 선분 SS와 TT만 있고 직사각형은 없다. SS 위의 점과 TT 위의 점을 잇는 최단 경로는 모두 길이가 99 이하이고, d(s,t)=9d(s, t) = 9이다. 따라서 답은 99이다. 그림 (b)에는 직사각형 AA와 선분 SS, TT가 있다. SS 위의 점 ss와 TT 위의 점 tt 사이에는 빨간색과 파란색 두 개의 최단 경로가 있다. 여기서 d(s,t)=11d(s, t) = 11이고, SS 위의 점과 TT 위의 점을 잇는 최단 경로의 길이는 모두 1111 이하이다. 답은 1111이다.

입력

첫 줄에는 여섯 개의 정수가 주어진다. 처음 세 정수는 선분 SS의 xx좌표와 두 yy좌표이고, 나머지 세 정수는 선분 TT의 xx좌표와 두 yy좌표이다.

다음 줄에는 직사각형의 개수 nn (0≤n≤5 0000 \le n \le 5\,000)이 주어진다. 직사각형에는 11번부터 nn번까지 번호가 매겨진다. 이어지는 nn개의 줄 중 ii번째 줄에는 직사각형 ii의 왼쪽 위 꼭짓점의 xx좌표와 yy좌표, 오른쪽 아래 꼭짓점의 xx좌표와 yy좌표를 나타내는 음이 아닌 정수 네 개가 주어진다.

선분 SS, TT의 끝점 좌표와 직사각형의 꼭짓점 좌표는 모두 10810^8 이하의 음이 아닌 정수이다.

출력

SS 위의 점과 TT 위의 점을 잇는 모든 최단 경로 중 가장 긴 경로의 길이를 한 줄에 출력한다.

예제 입력 1은 그림 (a)의 경우에, 예제 입력 2는 그림 (b)의 경우에 해당한다.

예제3

  1. 예제 1

    입력
    0 0 6 5 2 4
    0
    
    예상 출력
    9
    
  2. 예제 2

    입력
    0 0 6 5 2 4
    1
    2 6 3 0
    
    예상 출력
    11
    
  3. 예제 3

    입력
    0 10 30 5 10 30
    2
    2 50 3 12
    2 11 3 0
    
    예상 출력
    41