고정된 선에서 큐볼을 쳐 세 번의 충돌로 두 공을 양쪽 홀에 넣는 배치가 있는지 판정하고 값을 출력합니다.
보통7기하수학아직 제출이 없습니다시간 제한1초메모리 제한256 MB당구 퍼즐 게임을 만들고 있다. 플레이어는 큐볼을 정확한 자리에 놓고 정확한 각도로 쳐서, 한 번의 샷으로 여러 공을 홀에 넣어야 한다.
이 게임의 충돌 규칙은 실제 물리와 다르다. 움직이던 공 B가 멈춰 있던 공 A에 닿는 순간, B의 중심에서 A의 중심으로 향하는 단위 벡터를 n, B의 진행 방향 단위 벡터를 v라 하자. 공 A는 n 방향으로 움직이기 시작하고, 공 B는 v−2(v⋅n)n 방향으로 계속 움직인다. 실제 물리와 같은 것은 A의 방향뿐이고, B는 A가 테이블에 고정되어 있을 때처럼 튕겨 나간다. 이 문제에서 공의 속력은 아무 의미가 없다.

그림 1
테이블은 너비가 w, 길이가 l인 직사각형이다. 왼쪽 아래 꼭짓점을 원점으로 두면 왼쪽 홀은 (0,l), 오른쪽 홀은 (w,l)에 있다. 공을 홀에 넣으려면 공의 중심이 홀의 중심 위를 정확히 지나가야 한다. 테이블에는 쿠션이 없어서 w×l 영역을 벗어난 공은 그대로 떨어진다. 테이블과의 충돌은 생각하지 않아도 된다.

그림 2
1번, 2번, 3번 공이 테이블 위에 놓여 있다. 플레이어는 테이블 아래쪽 변에서 h만큼 떨어진 점선 위에 큐볼을 놓는다. 왼쪽 변에서의 거리 d와 각도 θ를 골라 큐볼을 쳤을 때 다음 두 가지가 모두 일어나야 한다.
세 번의 충돌은 모두 실제로 일어나야 한다. 즉 움직이는 공이 멈춰 있는 공에 닿는 순간, 진행 방향 v와 두 중심을 잇는 방향 n이 v⋅n>0을 만족해야 한다.
w, l, h, 세 공의 위치, 공의 반지름 r가 주어질 때 이 샷이 가능한지 판정하는 프로그램을 작성하시오. 조건을 만족하는 (d,θ)는 존재한다면 하나뿐이다. 또 조건을 만족하는 샷이 존재하는 입력에서는 위에 적은 세 번의 충돌 말고 다른 공끼리 닿는 일이 없다.
첫째 줄에 테이블의 너비 w와 길이 l이 주어진다 (1≤w≤120, 1≤l≤120).
둘째 줄에 여덟 개의 양의 정수 r, x1, y1, x2, y2, x3, y3, h가 주어진다. r는 큐볼을 포함한 모든 공의 반지름이고 (r≤5), (xi,yi)는 i번 공의 중심이며, h는 점선과 테이블 아래쪽 변 사이의 거리다 (r≤h≤l/2).
두 공이 겹치는 일은 없지만 한 점에서 닿을 수는 있다. 세 공은 모두 점선과 테이블 위쪽 변 사이에 있고, 테이블 안에 완전히 들어간다.
샷이 가능하면 점선 위에 큐볼을 놓을 거리 d와 큐볼을 쏘는 각도 θ를 공백으로 구분해 한 줄에 출력한다. θ는 x축 양의 방향에서 반시계 방향으로 잰 각도를 도 단위로 나타낸 값이고 0≤θ<360이다. 두 값 모두 소수점 아래 셋째 자리에서 반올림해 소수점 아래 둘째 자리까지 출력한다. 소수점 아래 자릿수가 0이어도 두 자리를 모두 쓴다.
큐볼도 테이블 안에 완전히 들어가야 하므로 r≤d≤w−r이어야 한다. 이 조건까지 만족하는 d와 θ가 없으면 impossible을 출력한다.