케이크 나누기

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

요약
서로 떨어진 두 볼록 다각형이 주어질 때 두 도형의 넓이를 동시에 이등분하는 직선을 찾아 기울기와 절편을 100만 배 한 정수로 출력한다.
난이도

어려움10점 중 8점

유형
기하, 이분 탐색, 분할 정복, 수학
정답자
아직 제출이 없습니다

문제

루나는 중추절에 태어났다. 그래서 생일마다 케이크를 두 개 먹는다. 하나는 생일 케이크이고 하나는 월병이다.

올해 루나는 남자친구 재디와 케이크를 나눠 먹으려고 했다. 두 케이크를 탁자에 올려놓고 재디에게 잘라 달라고 부탁했다. 생일 케이크도 절반씩, 월병도 절반씩 갖고 싶었기 때문이다. 그런데 재디는 칼을 한 번 그어 두 케이크를 한꺼번에 잘라 버렸다. 케이크는 둘 다 두 조각이 되기는 했지만 어느 쪽도 절반씩이 아니었다. 루나는 화가 나서 재디를 떠났다.

재디가 크게 후회하자 루나는 기회를 한 번 더 주기로 했다. 조건은 그대로다. 칼질은 단 한 번만 할 수 있고, 그 한 번으로 두 케이크를 모두 정확히 절반으로 나눠야 한다.

두 케이크는 모두 볼록 다각형이다. 탁자는 무한히 넓은 평면, 칼날은 무한히 긴 직선이라고 생각한다. 두 케이크의 넓이를 동시에 이등분하는 직선을 구하라.

입력

첫 줄에 테스트 케이스의 개수 TT (1≤T≤1001 \le T \le 100)가 주어진다.

각 테스트 케이스는 케이크 두 개를 나타내는 볼록 다각형 두 개로 이루어진다. 다각형마다 먼저 꼭짓점의 개수 nn (3≤n≤203 \le n \le 20)이 주어지고, 이어지는 nn개의 줄에 꼭짓점의 좌표 xx와 yy가 반시계 방향으로 하나씩 주어진다. 모든 좌표는 −1000-1000 이상 10001000 이하의 정수다.

한 테스트 케이스에 주어지는 두 다각형은 어떤 직선으로 완전히 나뉜다. 그 직선 위에 놓이는 점은 두 다각형 어디에도 없다.

출력

테스트 케이스마다 한 줄씩 출력한다. 재디가 잘라야 하는 직선을 y=kx+by = kx + b라 하고, k×106k \times 10^6에 가장 가까운 정수를 KK, b×106b \times 10^6에 가장 가까운 정수를 BB라고 하자. 테스트 케이스 번호 ii와 함께 두 정수를 다음 형식으로 출력한다.

Case #i: K B

번호 ii는 1부터 시작한다.

두 케이크를 동시에 이등분하는 직선은 테스트 케이스마다 정확히 하나뿐이며, yy축과 평행하지 않다. 또 ∣k∣≤10000|k| \le 10000, ∣b∣≤10000|b| \le 10000이고, k×106k \times 10^6과 b×106b \times 10^6은 각각 가장 가까운 정수와의 차이가 0.450.45 이하다. 따라서 반올림한 결과는 하나로 정해진다.

예제2

  1. 예제 1

    입력
    2
    3
    0 0
    1 1
    0 2
    3
    2 1
    3 0
    3 2
    4
    0 0
    1 0
    1 1
    0 1
    4
    2 2
    3 2
    3 3
    2 3
    
    예상 출력
    Case #1: 0 1000000
    Case #2: 1000000 0
    
  2. 예제 2

    입력
    2
    5
    -8 -5
    -4 -6
    -3 -6
    -5 0
    -8 2
    4
    2 -3
    3 -5
    6 0
    2 3
    3
    -7 -6
    -5 -6
    -4 3
    3
    5 4
    6 -6
    6 0
    
    예상 출력
    Case #1: 203767 -1509605
    Case #2: 254754 -1981968