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

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

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