시간 제한
메모리 제한
시간 제한
3초
메모리 제한
256 MB
바샤와 페탸가 재미있는 게임을 한다. 규칙은 간단하다. 두 개의 프레임이 주어지고, 두 번째 프레임을 평행이동시켜 두 프레임이 겹치는 영역의 넓이가 최대가 되도록 만들어야 한다. 두 사람은 각자 두 번째 프레임의 평행이동 벡터를 하나 적어내고, 더 큰 교집합 넓이를 만든 사람이 이긴다.
바샤는 최적의 평행이동 벡터를 찾아 주는 프로그램을 만들어서 이기고 싶어한다.
이 게임에서 프레임이란 두 직사각형의 차집합이다. 즉, 바깥 직사각형에서 그 안에 완전히 들어 있는 안쪽 직사각형을 뺀 영역이다. 안쪽 직사각형은 바깥 직사각형의 내부에 완전히(경계에 닿지 않게) 놓여 있으며, 두 직사각형의 변은 모두 좌표축에 평행하다.
정의를 더 분명히 하기 위해 몇 가지 예를 살펴보자.
![]() | ![]() | ![]() |
| 잘못된 프레임 | 올바른 프레임 | 프레임의 교집합 |
프레임의 넓이는 (W⋅H−w⋅h) 이다. 여기서 W,H 는 바깥 직사각형의 가로·세로 길이이고, w,h 는 안쪽 직사각형의 가로·세로 길이이다 (0<w<W, 0<h<H).
두 번째 프레임을 적절히 평행이동시켰을 때 두 프레임의 교집합 넓이가 가질 수 있는 최댓값을 구하는 프로그램을 작성하라.
각 프레임은 네 개의 점으로 주어진다. 먼저 바깥 직사각형의 마주 보는 두 꼭짓점이 주어지고, 이어서 안쪽 직사각형의 마주 보는 두 꼭짓점이 주어진다. 각 점은 정수 좌표 x, y 의 쌍으로 표현된다. 모든 좌표의 절댓값은 108 을 넘지 않는다.
첫째 줄에는 첫 번째 프레임의 정보가, 둘째 줄에는 두 번째 프레임의 정보가 주어진다.
두 번째 프레임을 평행이동시켜 얻을 수 있는 두 프레임 교집합 넓이의 최댓값을 정수 하나로 출력한다.