그림자

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

요약
점광원과 축에 나란한 직육면체 나무가 주어질 때 바닥에 생기는 그림자의 넓이를 구하고, 무한대이거나 넓이가 0인 경우도 판별합니다.
난이도

어려움10점 중 8점

유형
기하, 수학, 구현
정답자
아직 제출이 없습니다

문제

한 가로등이 한 점에서 빛을 내는 점광원처럼 작동한다. 그 근처에 좌표축과 평행한 직육면체 모양의 나무를 놓으려 한다. 좌표계에서 z축은 지면으로부터의 높이를 나타내며, 지면은 z = 0 평면이다.

나무를 이루는 직육면체는 서로 마주 보는 두 꼭짓점으로 주어진다. 나무가 지면에 닿아 있지 않을 수도 있다. 주어진 점광원이 만드는 나무의 지면 위 그림자 넓이를 구하라.

입력

첫째 줄에 여섯 개의 정수 x1 y1 z1 x2 y2 z2가 주어진다. 이는 나무의 한 꼭짓점 좌표와 그 대각선 반대편 꼭짓점 좌표이다. 둘째 줄에는 점광원의 좌표를 나타내는 세 정수 x y z가 주어진다.

모든 좌표는 10 이하의 자연수이며, x, y, z 순서로 주어진다. 점광원은 직육면체의 경계 위에 있지 않다.

출력

첫째 줄에 그림자의 넓이를 출력한다. 넓이가 무한대이면 -1을 출력한다. 그림자가 무한히 뻗는 직선 형태라서 넓이가 0이라면 0을 출력한다.

절대 오차 또는 상대 오차는 10^-6까지 허용된다.

힌트

직육면체의 어떤 변 길이는 0일 수 있으므로 실제 모양이 점, 선분, 직사각형처럼 퇴화할 수 있다. 나무가 점광원의 높이에 걸치면 그림자가 무한히 뻗을 수 있다. 이때 가능한 방향이 한 직선으로만 모이면 넓이는 0이고, 그렇지 않으면 넓이는 무한대이다.

예제4

  1. 예제 1

    입력
    1 1 1 10 1 1
    5 5 5
    
    예상 출력
    0
    
  2. 예제 2

    입력
    1 1 3 10 1 1
    2 2 2
    
    예상 출력
    -1
  3. 예제 3

    입력
    1 1 1 2 2 2
    3 3 3
    
    예상 출력
    15.75
    
  4. 예제 4

    입력
    1 1 1 3 3 3
    2 2 2
    
    예상 출력
    -1