실행 시간 제한 | 메모리 제한 |
---|---|
2 초 | 512 MB |
미술 학교의 학생들이 어떻게 레이저 라이트 쇼를 구현할 것인가에 대한 이야기입니다.
미술 학교의 학생들은 다가오는 미술 전시회를 위해 강력한 레이저를 준비했습니다. 그들은 레이저를 어떻게든 학교의 대강당 반대편에 있는 무대로 보내고 싶어합니다. 레이저와 무대는 학교의 2D 지도에서 점으로 간주됩니다. 학생들은 레이저를 가로 또는 세로로 (즉, x 또는 y 축과 정렬) 빛을 내보내도록 지시하려고 합니다. 그리고 이 빛을 몇 개의 거울로 반사시켜 무대로 보낼 계획입니다.
학교에는 학생들이 거울을 설치할 수 있는 N개의 기둥(1≤N≤100,000)이 있습니다. 거울을 설치하지 않으면 레이저는 방향을 바꾸지 않고 그대로 통과하게 됩니다. 거울을 설치하면 대각선 방향(/ 또는 \)으로 정렬하여 가로 방향의 빛을 세로 방향으로, 또는 세로 방향의 빛을 가로 방향으로 바꿉니다.
레이저를 무대로 보내는 데 필요한 거울의 최소 개수를 출력하거나, 불가능한 경우 -1을 출력하세요.
입력 첫 번째 줄에는 5개의 공백으로 구분된 정수 N, xL, yL, xB, yB가 포함됩니다. 여기서 (xL,yL)은 레이저의 위치이고 (xB,yB)는 무대의 위치입니다. 모든 좌표는 0과 1,000,000,000 사이입니다.
다음 N 줄에는 기둥의 x와 y 위치가 포함되며, 모두 0…1,000,000,000 범위의 정수입니다.
레이저를 무대로 보내는 데 필요한 거울의 최소 개수를 출력하거나, 불가능한 경우 -1을 출력하세요.
4 0 0 7 2 3 2 0 2 1 6 3 0
1
레이저를 위쪽으로 수직으로 발사하면 (0, 2) 위치의 울타리 기둥에서 반사됩니다. 이때, 해당 울타리 기둥에 대각선(/) 방향의 거울을 설치한다면 빛은 오른쪽으로 반사되어 직진하게 됩니다. 이렇게 반사된 빛은 목적지인 (7, 2)까지 직접 도달할 수 있습니다.
따라서 레이저를 목적지까지 도달시키기 위해 필요한 최소 거울의 수는 1개입니다.
출처: USACO 2016 December Contest, Gold Problem 3. Lasers and Mirrors