풍뎅이 찰리
면접 대비시간 제한1초메모리 제한128 MB
3차원 선분 네트워크에서 이동 거리와 연속한 선분 사이의 회전각을 합한 비용이 최소인 경로를 찾는다.
문제
찰리는 날 줄 안다. 그런데도 한 지점에서 다른 지점으로 이동하는 일은 찰리에게 무척 성가신 일이다. 찰리가 풍뎅이이기 때문이다. 잘 알려진 대로, 모든 풍뎅이(바퀴벌레와 혼동하지 말 것)는 굼뜨고 느리다. 직선을 따라 날아가는 데에도 시간이 걸릴 뿐 아니라, 방향을 트는 데에는 더 많은 시간이 든다. 이런 한계를 아는 당신이, 찰리가 가장 빠른 경로를 찾도록 도와줄 수 있을까?
입력
입력은 여러 개의 인스턴스로 이루어지며, 파일의 끝까지 계속된다.
각 인스턴스의 첫 번째 줄에는 세 정수 , , 가 주어진다 (, ). 여기서 은 직선 비행 궤적(이하 코크리더)의 개수, 는 찰리의 비행 속력(초당 미터), 는 찰리가 방향을 트는 속력(초당 도)이다.
두 번째 줄에는 여섯 정수 가 주어진다 (). 이는 각각 출발점 과 도착점 을 나타낸다.
이어지는 개의 줄에는 각각 여섯 정수 가 주어진다 (). 이는 점 과 을 잇는 선분, 즉 하나의 코크리더를 뜻한다. 어떤 선분의 내부 점도 다른 선분의 끝점이 되지 않으며, 출발점과 도착점은 모두 적어도 하나의 선분의 끝점이다. 모든 좌표의 단위는 미터이다.
출력
각 인스턴스에 대해, 찰리가 출발점에서 도착점까지 이동하는 데 필요한 최소 시간 을 소수점 아래 넷째 자리까지 반올림하여 한 줄에 출력한다.
찰리는 오직 선분 전체를 따라서만 날 수 있고, 모든 선분은 양방향으로 사용할 수 있다. 어떤 경로의 소요 시간은 초이며, 여기서 은 지나간 선분들의 길이 합(미터), 는 연속한 두 선분 사이에서 방향을 트는 각도의 합(도)이다. 찰리가 처음과 마지막에 바라보는 방향은 자유롭게 정할 수 있으므로, 첫 선분 이전과 마지막 선분 이후에는 방향 전환 비용이 없다. 출발점에서 도착점까지의 경로는 항상 존재한다고 가정한다.