문제
충남대학교 알고리즘 동아리원인 승우는 캠퍼스에서 레이저 공연을 준비하고 있다. 레이저 장비가 매우 무겁기 때문에, 승우는 레이저가 처음 설치된 위치에서 다른 곳으로 옮길 수 없다. 승우의 목표는 레이저 빛을 반대편에 있는 학생회관까지 보내는 것이다. 레이저와 학생회관의 위치는 모두 2차원 평면상의 점으로 나타낼 수 있다. 승우는 처음에 레이저가 수평 또는 수직 방향(축 또는 축에 평행한 방향)으로 빛을 내보내도록 설정할 수 있다. 그 후, 여러 개의 거울에 이 빛을 반사시켜 학생회관까지 유도하려고 한다.
캠퍼스에는 개의 기둥이 있으며 (), 각 기둥의 위치는 서로 다르며 레이저나 학생회관의 위치와도 겹치지 않는다. 승우는 기둥에 거울을 설치하거나 설치하지 않을 수 있다. 거울을 설치하지 않은 기둥은 레이저 빛이 방향을 바꾸지 않고 그대로 통과한다. 기둥에 거울을 설치할 경우, / 또는 \ 모양으로 대각선 방향으로 설치하여 수평 방향의 빛을 수직으로, 혹은 수직 방향의 빛을 수평으로 바꿀 수 있다.
레이저를 학생회관까지 보내기 위해 필요한 최소 거울의 개수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 다섯 개의 정수 가 공백으로 구분되어 주어진다. 여기서 은 레이저의 위치, 는 학생회관의 위치이다. (; )
이어서 개의 줄에는 각 기둥의 좌표와 좌표를 나타내는 두 정수가 공백으로 구분되어 주어진다. ()
출력
레이저를 학생회관까지 보내기 위해 필요한 최소 거울의 개수를 출력한다. 만약 학생회관에 도달하는 것이 불가능하다면 -1을 출력한다.
예제 입력 1
4 0 0 7 2
3 2
0 2
1 6
3 0
예제 출력 1
1
코드를 제출하려면 로그인이 필요합니다.
로그인