아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

정사각형 방의 두 광원

시간 제한40초메모리 제한512 MB

요약
정사각형 방 안의 두 점광원과 최대 50개의 원기둥이 주어질 때, 빛을 받지 못하는 영역과 빨강만, 초록만, 둘 다 받는 영역의 넓이를 각각 구한다.
난이도

어려움10점 중 8점

유형
기하, 구현, 분할 정복, 완전 탐색
정답자
아직 제출이 없습니다

문제

정사각형 모양의 큰 방에 점광원이 두 개 있다. 하나는 빨간색이고 다른 하나는 초록색이다. 방에는 원 모양 기둥도 n개 있다.

빛은 직선으로 나아가고 벽과 기둥에 흡수된다. 기둥은 빛을 통과시키지 않으므로 그림자가 생긴다. 그래서 방에는 빛이 전혀 닿지 않는 곳(검은색), 두 광원 중 한쪽만 닿는 곳(빨간색 또는 초록색), 두 빛이 모두 닿는 곳(노란색)이 생긴다. 네 색이 차지하는 넓이를 각각 구한다. 기둥이 차지하는 부분은 어느 넓이에도 넣지 않는다.

입력

첫 줄에 테스트 케이스의 개수 T가 주어진다.

각 테스트 케이스는 다음 순서로 주어진다.

  • 한 줄에 빨간 광원의 좌표 x, y
  • 한 줄에 초록 광원의 좌표 x, y
  • 한 줄에 기둥의 개수 n
  • 이어지는 n개의 줄에 기둥 하나의 정보 x, y, r. 이 기둥은 중심이 (x, y)이고 반지름이 r인 원이다.

방은 0≤x,y≤1000 \le x, y \le 100인 정사각형이다. 기둥과 방의 벽, 두 광원은 서로 겹치지 않고 닿지도 않는다.

제한

  • 입력의 모든 수는 정수다.
  • 1≤T≤151 \le T \le 15
  • 0≤x,y≤1000 \le x, y \le 100
  • 1≤r≤491 \le r \le 49
  • 0≤n≤500 \le n \le 50

출력

테스트 케이스마다 다섯 줄을 출력한다. 첫 줄은 Case #X:이고, X는 1부터 시작하는 테스트 케이스 번호다. 이어서 검은색, 빨간색, 초록색, 노란색 넓이를 이 순서로 한 줄에 하나씩 출력한다.

Case #X:
검은색 넓이
빨간색 넓이
초록색 넓이
노란색 넓이

넓이는 모두 소수점 아래 넷째 자리까지 반올림해 출력한다. 넓이가 0이면 0.0000을 출력한다.

예제2

  1. 예제 1

    입력
    1
    5 50
    95 50
    1
    50 50 10
    
    예상 출력
    Case #1:
    0.7656
    1437.9856
    1437.9856
    6809.1039
    
  2. 예제 2

    입력
    1
    10 10
    90 90
    0
    
    예상 출력
    Case #1:
    0.0000
    0.0000
    0.0000
    10000.0000