시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 256 MB | 245 | 22 | 17 | 9.714% |
하이비는 최근 보물 찾기라는 게임에 빠졌다.
이 게임은 2차원 평면에서 진행되며, 플레이어의 시작 위치와 보물의 위치, 그리고 보물의 위치로 가기 위해 쓰이는 $ N $개의 보조점이 주어진다. 보조점은 $ 1 $번부터 $ N $번까지 번호가 매겨져있다.
하이비는 커맨드를 $ N $번 입력할 수 있으며, 각 커맨드는 $ 0 $ 이상 $ 1 $ 이하의 실수이다.
하이비가 $ i $번째 커맨드로 $ r $을 입력할 때, 플레이어는 아래와 같이 이동한다.
$ N $개의 커맨드를 모두 입력한 뒤 플레이어의 위치가 보물의 위치와 같다면 게임이 클리어된다.
하이비는 이 게임이 너무 재밌어서 초기 상태가 주어질 때 게임을 자동으로 클리어해주는 프로그램을 만들기로 했다.
첫째 줄에는 보조점의 개수 $ N $이 주어진다. $( 0 \le N \le 300\,000 )$
둘째 줄에는 출발점의 위치 $ (x_s, y_s) $이 주어진다.
셋째 줄부터 $ N $개의 줄에 걸쳐 보조점의 위치 $ (x_i, y_i) $가 1번부터 차례대로 주어진다.
$ N+3 $번째 줄에는 보물의 위치 $ (x_t, y_t) $가 주어진다.
입력으로 주어지는 모든 좌표는 $ -10^9 $ 이상 $ 10^9 $ 이하의 정수이다.
만약 보물의 위치로 갈 수 있다면, 첫째 줄에 YES
를 출력한 뒤 둘째 줄에 보물을 찾기 위해 입력해야 하는 커맨드를 공백으로 구분하여 1번부터 출력한다.
만약 보물을 찾을 수 없다면 첫째 줄에 NO
를 출력한다.
커맨드대로 움직였을 때의 플레이어의 최종 위치를 $ (x_e, y_e) $, 보물의 위치를 $ (x_t, y_t) $라고 하자. 이 때, $ \max\left( \frac{|x_e-x_t|}{\max(|x_t|,1)}, \frac{|y_e-y_t|}{\max(|y_t|,1)} \right) \le 10^{-6} $라면 정답으로 처리된다. 다르게 말하자면, 두 좌표의 절대/상대오차가 $ 10^{-6} $ 이하이면 정답으로 처리된다.
5 0 0 2 0 0 2 -2 0 -1 -2 1 -2 -1 -1
YES 0.5 0.666666666666667 0.8 0.5 0.117647058823529
5 0 0 2 0 0 2 -2 0 -1 -2 1 -2 -2 -1
NO
3 1 1 5 5 1 5 5 1 3 2
YES 0.25 0.2 0.375
University > 한양대학교 > 제9회 한양대학교 프로그래밍 경시대회 > Advanced Division H번