풀 뜯는 염소 (Small)

두 말뚝을 중심으로 양동이 위치를 지나는 가장 작은 두 원이 서로 겹치는 넓이를 구합니다.

쉬움3기하수학아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

농부 존이 염소 NN마리를 들여왔다. 염소 ii는 위치 PiP_i에 박은 말뚝에 길이 LiL_i인 밧줄로 묶인다. 그래서 염소 ii는 점 PiP_i에서 거리가 LiL_i 이하인 곳이면 어디든 갈 수 있고, 그 밖으로는 나가지 못한다. 목초지는 넓고 평평하므로 무한한 평면으로 생각한다.

말뚝 위치는 이미 정해져 있고, 존은 밧줄 길이만 고르면 된다. 고르기 까다로운 이유가 둘 있다.

  • 염소가 모두 물통 하나에 닿아야 한다. 존은 물통을 어디에 둘지 아직 정하지 못했고, 후보를 Q1,Q2,,QMQ_1, Q_2, \dots, Q_M으로 좁혀 두었다.
  • 염소는 성질이 사나워서 한자리에 모이면 시끄럽게 싸운다. 그래서 존은 염소가 모두 닿을 수 있는 영역의 넓이 AA를 최소로 만들고 싶다.

물통을 QjQ_j에 두는 경우마다, 염소가 모두 닿을 수 있는 영역의 넓이 AjA_j가 최소가 되도록 밧줄 길이를 정하고, 그때의 AjA_j를 구하라.

아래 그림은 말뚝이 네 개인 상황을 보여준다. 파란 점 네 개가 말뚝 위치 P1,P2,P3,P4P_1, P_2, P_3, P_4이고, 빨간 점 두 개가 물통 후보 Q1,Q2Q_1, Q_2이다. 색칠된 두 영역의 넓이가 각각 A1A_1, A2A_2이다. 이 문제에서 말뚝은 항상 두 개다.

말뚝 네 개와 물통 후보 두 개, 그리고 색칠된 두 영역

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스의 첫 줄에는 정수 NNMM이 주어진다.

이어지는 NN개 줄에 말뚝 위치 P1,P2,,PNP_1, P_2, \dots, P_N이 한 줄에 하나씩 주어지고, 그다음 MM개 줄에 물통 후보 위치 Q1,Q2,,QMQ_1, Q_2, \dots, Q_M이 한 줄에 하나씩 주어진다. 이 N+MN + M개 줄에는 각각 그 점의 xx좌표와 yy좌표가 공백 하나를 사이에 두고 주어진다.

제한

  • 모든 좌표는 1000-1\,000 이상 10001\,000 이하의 정수이다.
  • 한 테스트 케이스 안의 N+MN + M개 점은 서로 다르고, 그중 어떤 세 점도 한 직선 위에 있지 않다.
  • 1T1001 \le T \le 100
  • N=2N = 2
  • 1M101 \le M \le 10

출력

각 테스트 케이스마다 Case #x: A1 A2 ... AM 형식으로 한 줄을 출력한다. xx11부터 시작하는 테스트 케이스 번호이고, AjA_j는 위에서 정의한 넓이다.

넓이는 반올림해서 소수점 아래 네 자리까지 항상 출력하고, 값 사이는 공백 하나로 구분한다. 예를 들어 넓이가 0.29394400.2939440이면 0.2939를, 10.70810.708이면 10.7080을 출력한다.