움직이는 점 잡기

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

요약
추격자가 모든 목표보다 빠를 때, 움직이는 N개의 목표를 차례로 만나 모두 잡는 최소 시간을 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 기하, 그리디, 비트 연산
정답자
아직 제출이 없습니다

문제

평면 위에서 여러 개의 표적 점이 움직인다. 각 표적 점은 일정한 속력으로 직선을 따라 이동하며, 방향을 절대 바꾸지 않는다. 추격 점 하나가 원점 (0,0)(0, 0)에서 출발하며, 모든 표적 점보다 엄격히 빠른 일정한 속력으로 움직인다. 표적과 달리 추격 점은 언제든 즉시 방향을 바꿀 수 있다.

추격 점은 어떤 표적과 같은 시각에 평면 위 같은 지점에 놓이는 순간 그 표적을 잡는다. 접촉은 순간적이어도 되므로, 추격 점이 표적과 양(+)의 시간 동안 함께 머무를 필요는 없다. 하나의 표적을 잡은 뒤에는 다음 표적을 잡으러 이동하고, 이를 반복하여 모든 표적을 잡는다.

추격 점의 속력과 각 표적의 초기 위치, 이동 방향, 속력이 주어질 때, 추격 점이 모든 표적을 잡는 데 필요한 최소 총 시간을 구하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 두 정수가 주어진다.

N C

여기서 NN (1≤N≤151 \le N \le 15)은 표적 점의 개수이고, CC (0<C≤10000 < C \le 1000)는 추격 점의 속력이다.

이어지는 NN개의 줄에는 각각 하나의 표적을 나타내는 네 정수가 주어진다.

X Y D S

여기서 (X,Y)(X, Y) (−1000≤X,Y≤1000-1000 \le X, Y \le 1000)는 시각 00에서의 표적 위치, DD (0≤D<3600 \le D < 360)는 도(degree) 단위의 이동 방향(00도는 양의 xx축, 9090도는 양의 yy축 방향), SS (0≤S<C0 \le S < C)는 표적의 속력이다. 모든 표적은 시각 00부터 즉시 움직이기 시작한다.

입력의 끝은 두 개의 00으로 이루어진 줄 0 0이다.

출력

각 테스트 케이스마다 추격 점이 모든 표적을 잡는 데 필요한 최소 시간을 소수점 셋째 자리에서 반올림하여, 소수점 아래를 항상 두 자리로 맞추어 한 줄에 하나씩 출력한다. 불필요한 공백을 출력하지 말고, 답 사이에 빈 줄을 넣지 않는다.

예제1

  1. 예제 1

    입력
    2 25
    19 19 32 10
    6 45 133 19
    5 10
    10 20 45 3
    30 10 135 4
    100 100 219 5
    10 100 301 4
    30 30 5 3 
    0 0
    
    예상 출력
    12.62
    12.54