레이저 발사
시간 제한1초메모리 제한128 MB
드로이드에서 제다이까지 각각 n번 이하로 반사되는 서로 다른 방향의 레이저 두 경로를 찾아 두 경로 길이 차의 최솟값을 구한다.
문제
당신은 드로이드이며, 거울로 된 정사각형 방 안에 있는 제다이를 맞히려 합니다. 제다이는 광선검으로 레이저 하나를 막을 수 있으므로 정면으로 한 발만 쏘는 것은 소용이 없습니다. 대신 두 발의 레이저를 쏘아 서로 다른 두 방향에서 같은 순간에 제다이에게 도달하도록 하면, 제다이는 두 발을 동시에 막을 수 없습니다.
벽은 거울이라 레이저가 반사되지만, 거울이 완벽하지 않아 각 레이저는 사라지기 전까지 최대 번만 튕길 수 있습니다. 당신은 레이저 권총 두 자루와 드로이드의 반사 신경을 지녀, 두 발을 임의로 작은 간격(동시 발사 포함)으로 쏠 수 있습니다. 레이저의 속력이 일정하므로 두 발이 동시에 도달하려면 두 발을 쏘는 시간 간격이 두 경로 길이의 차이와 같아지며, 목표는 이 간격을 최소화하는 것입니다.
방은 한 변이 피트인 정사각형으로, 왼쪽 아래 꼭짓점이 , 오른쪽 위 꼭짓점이 입니다. 당신은 에, 제다이는 에 있습니다. 여기저기 튕긴 레이저가 나중에 당신의 위치 를 다시 지나가더라도 그대로 진행합니다(직접 계획한 발사이므로 피할 수 있습니다). 그러나 레이저는 제다이의 위치 에 처음 도달하는 즉시 멈춥니다. 반사는 입사각과 반사각이 같다는 일반적인 규칙을 따르며 지연 시간을 추가하지 않습니다. 정확히 꼭짓점(코너)을 향해 쏜 레이저는 온 방향의 정반대로 되돌아 나오며, 이때 두 번 튕긴 것으로 셉니다. 레이저는 나노초에 피트를 이동합니다.
마지막에 같은 방향으로 도달하는 두 발은 하나의 각도로 취급합니다(제다이가 함께 막을 수 있습니다). 따라서 두 레이저는 반드시 서로 다른 방향에서 제다이에게 도달해야 합니다.
입력
입력은 여러 개의 테스트 케이스로 이루어집니다. 각 테스트 케이스는 공백으로 구분된 다섯 정수 , , , , 이 한 줄에 주어집니다. 은 당신의 위치, 는 제다이의 위치, 은 최대 반사 횟수입니다. 제약 조건은 , 이며, 드로이드와 제다이는 항상 서로 다른 위치에 있습니다. 즉 입니다. 줄은 입력의 끝을 나타내며 처리하지 않습니다.
출력
각 테스트 케이스마다 두 레이저를 쏘는 사이의 최소 지연 시간(나노초)을 소수점 아래 정확히 자리로 반올림하여 한 줄에 출력합니다. 어떤 답도 반올림 경계로부터 이내에 있지 않도록 테스트 데이터가 구성되어 있습니다.