프리 솔로
시간 제한5초메모리 제한2048 MB
알렉스가 네 개의 손발 중 세 개 이상을 홀드에 붙인 채 이동해, 손발 하나가 목표 홀드에 닿을 때까지의 최단 경로 길이를 구합니다.
문제
알렉스는 다음 프리 솔로 등반을 계획하고 있는 암벽 등반가다. 이번에는 아무도 오르지 않은 완전히 새로운 루트를 오르려 한다. 등반을 시작하기 전에 정상까지 가는 최단 경로가 대략 어느 정도인지 알고 싶어 한다.
등반할 때 알렉스는 손과 발로 홀드를 잡는다. 홀드는 벽 위의 점으로, 손이나 발을 올려 몸을 안정시킬 수 있는 곳이다.
이 단순화한 시뮬레이션에서 알렉스는 하나의 점으로 모델링된다. 이 점에서 길이가 최대 1인 팔다리 4개가 뻗어 나온다. 홀드도 점이며, 어느 팔다리든 어느 홀드든 사용할 수 있다. 다만 하나의 홀드는 한 번에 한 팔다리만 사용할 수 있다. 안전을 위해 알렉스는 등반 내내 적어도 3개의 팔다리를 홀드에 붙여 두어야 한다.
알렉스는 좌표 에서 출발하며, , , 에 있는 세 홀드를 잡고 있다. 목표는 에 있는 홀드다. 팔다리 중 하나가 목표 홀드에 닿을 때까지 알렉스의 위치가 그리는 경로 중 가장 짧은 길이를 구하라. 알렉스의 위치는 안전만 지킨다면 벽 위 어디든 될 수 있으며, y좌표가 음수인 곳도 포함된다.
보장 사항:
- 두 홀드 사이의 거리는 모두 보다 크다.
- 두 홀드 사이의 거리가 정확히 2에서 이내로 가까운 경우는 없다.
- 벽 위의 어떤 위치에서도 알렉스가 6개를 넘는 홀드에 닿을 수 없다.
- 알렉스의 팔 길이가 만큼 늘거나 줄어도 최단 경로의 길이는 를 넘게 바뀌지 않는다.
입력
첫 줄에 홀드의 개수를 나타내는 정수 이 주어진다.
다음 개 줄에는 각 홀드의 x좌표와 y좌표를 나타내는 실수가 주어진다 . 모든 실수는 소수점 아래 정확히 5자리로 표기된다.
시작 시 잡고 있는 세 홀드는 입력에 포함되지 않는다. 목표 홀드는 마지막에 주어지는 홀드다.
출력
목표 홀드에 도달하는 안전한 최단 경로의 길이를 출력하라. 그런 경로가 없으면 을 출력하라. 절대 오차 또는 상대 오차가 정답과 이내이면 정답으로 인정한다.