트릭 샷

고정된 선에서 큐볼을 쳐 세 번의 충돌로 두 공을 양쪽 홀에 넣는 배치가 있는지 판정하고 값을 출력합니다.

보통7기하수학아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

당구 퍼즐 게임을 만들고 있다. 플레이어는 큐볼을 정확한 자리에 놓고 정확한 각도로 쳐서, 한 번의 샷으로 여러 공을 홀에 넣어야 한다.

이 게임의 충돌 규칙은 실제 물리와 다르다. 움직이던 공 BB가 멈춰 있던 공 AA에 닿는 순간, BB의 중심에서 AA의 중심으로 향하는 단위 벡터를 nn, BB의 진행 방향 단위 벡터를 vv라 하자. 공 AAnn 방향으로 움직이기 시작하고, 공 BBv2(vn)nv - 2(v \cdot n)n 방향으로 계속 움직인다. 실제 물리와 같은 것은 AA의 방향뿐이고, BBAA가 테이블에 고정되어 있을 때처럼 튕겨 나간다. 이 문제에서 공의 속력은 아무 의미가 없다.

그림 1

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

그림 2

1번, 2번, 3번 공이 테이블 위에 놓여 있다. 플레이어는 테이블 아래쪽 변에서 hh만큼 떨어진 점선 위에 큐볼을 놓는다. 왼쪽 변에서의 거리 dd와 각도 θ\theta를 골라 큐볼을 쳤을 때 다음 두 가지가 모두 일어나야 한다.

  • 큐볼이 1번 공을 맞히고, 튕겨 나가 2번 공을 맞혀 2번 공을 왼쪽 홀에 넣는다.
  • 큐볼에 맞은 1번 공이 3번 공을 맞혀 3번 공을 오른쪽 홀에 넣는다.

세 번의 충돌은 모두 실제로 일어나야 한다. 즉 움직이는 공이 멈춰 있는 공에 닿는 순간, 진행 방향 vv와 두 중심을 잇는 방향 nnvn>0v \cdot n > 0을 만족해야 한다.

ww, ll, hh, 세 공의 위치, 공의 반지름 rr가 주어질 때 이 샷이 가능한지 판정하는 프로그램을 작성하시오. 조건을 만족하는 (d,θ)(d, \theta)는 존재한다면 하나뿐이다. 또 조건을 만족하는 샷이 존재하는 입력에서는 위에 적은 세 번의 충돌 말고 다른 공끼리 닿는 일이 없다.

입력

첫째 줄에 테이블의 너비 ww와 길이 ll이 주어진다 (1w1201 \le w \le 120, 1l1201 \le l \le 120).

둘째 줄에 여덟 개의 양의 정수 rr, x1x_1, y1y_1, x2x_2, y2y_2, x3x_3, y3y_3, hh가 주어진다. rr는 큐볼을 포함한 모든 공의 반지름이고 (r5r \le 5), (xi,yi)(x_i, y_i)ii번 공의 중심이며, hh는 점선과 테이블 아래쪽 변 사이의 거리다 (rhl/2r \le h \le l/2).

두 공이 겹치는 일은 없지만 한 점에서 닿을 수는 있다. 세 공은 모두 점선과 테이블 위쪽 변 사이에 있고, 테이블 안에 완전히 들어간다.

출력

샷이 가능하면 점선 위에 큐볼을 놓을 거리 dd와 큐볼을 쏘는 각도 θ\theta를 공백으로 구분해 한 줄에 출력한다. θ\thetaxx축 양의 방향에서 반시계 방향으로 잰 각도를 도 단위로 나타낸 값이고 0θ<3600 \le \theta < 360이다. 두 값 모두 소수점 아래 셋째 자리에서 반올림해 소수점 아래 둘째 자리까지 출력한다. 소수점 아래 자릿수가 0이어도 두 자리를 모두 쓴다.

큐볼도 테이블 안에 완전히 들어가야 하므로 rdwrr \le d \le w - r이어야 한다. 이 조건까지 만족하는 ddθ\theta가 없으면 impossible을 출력한다.