[2019 SCPC 2차 예선]
드론으로 동굴을 탐험하려고 한다.
동굴은 2차원 평면의 영역으로 생각하자.
아래 그림과 같이 동굴의 천장과 바닥은 수직인 선분과 수평인 선분들로만 이루어진다고 한다.
어떤 \(x\) 좌표에서도 그 \(x\) 좌표에는 천정(바닥)의 한 점 혹은 한 수직변만 존재한다.
드론은 동굴의 왼쪽 끝의 정해진 높이(그림에서 왼쪽 별표)에서 시작해서 오른쪽 끝의 정해진 높이(그림에서 오른쪽 별표)로 가야 한다. 드론이 움직이는 방법은 아래와 같다.
1. 드론은 수평으로 오른쪽으로 움직일 수 있다.
2. 드론은 수직으로 아래나 위로 움직일 수 있다.
3. 드론은 위 조건 하에서 가능한 최단 경로로 움직여야 한다.
드론이 움직일 수 있는 경로는 아마도 여러가지가 있을 것이다.
드론이 동굴을 탐험하는 것을 무한히 반복해서 모든 가능한 방법으로 움직인 궤적을 다 그리면 어떤 영역이 나올 것이다.
위에서 빗금친 영역이 그러한 영역이 될 것이다.
이 영역의 면적을 계산하는 프로그램을 작성하라.
(드론은 천정이나 바닥에 무한히 가까이 날 수 있으므로 면적을 계산하는 목적으로는 천정이나 바닥에 붙어서 날수 있는 것으로 생각해도 동일하다.)
입력 파일에는 여러 테스트 케이스가 포함될 수 있다.
파일의 첫째 줄에 테스트 케이스의 개수를 나타내는 자연수 \(T\) 가 주어지고,
이후 차례로 \(T\) 개의 테스트 케이스가 주어진다. \((1\le T \le 30)\)
각 테스트 케이스의 첫 줄에는 동굴의 가로 길이 \(L\), 시작 높이 \(S\), 끝 높이 \(E\)가 주어진다.
다음 줄에 천정을 이루는 가로변들의 개수 \(A\)가 주어진다. 다음 \(A\)개의 줄들에, 왼쪽부터 순서대로, 각 가로변의 가로 길이와 높이가 주어진다.
다음 줄에 바닥을 이루는 가로변들의 개수 \(B\)가 주어진다.
다음 B개의 줄들에, 왼쪽부터 순서대로, 각 가로변의 가로 길이와 높이가 주어진다.
드론의 시작 위치는 동굴의 왼쪽 끝이고, 최종 위치는 동굴의 오른쪽 끝이다.
드론의 시작 높이와 끝 높이는 동굴의 천정과 바닥 사이이다. 동굴 전체의 길이 \(L\)을 포함한 모든 가로 길이는 최대 \(10^9\)인 자연수이다.
모든 높이는 절대값이 최대 \(10^9\)인 정수이다. 동굴의 천정은 동굴의 바닥과 단 한 점에서도 만나지 않는다. \(1 \le A, B \le 100,000\)이다.
각 테스트 케이스의 답을 순서대로 표준출력으로 출력하여야 하며,
각 테스트 케이스마다 첫 줄에는 “Case #C”를 출력하여야 한다. 이때 C는 테스트 케이스의 번호이다.
다음 줄에 계산된 면적을 정수로 출력한다.
입력 |
---|
1 13 6 7 5 3 7 1 1 4 6 4 7 1 8 7 2 2 3 0 1 1 1 2 1 3 1 0 4 3 |
출력 |
---|
Case #1 50 |