아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

장애물 코스

시간 제한1초메모리 제한1024 MB

요약
정지 상태에서 매초 동서남북 중 한 방향으로 쳐서 가속하는 퍽을, 정수 좌표의 장애물을 피해 목적지까지 최소 몇 초 만에 보내는지 구한다.
난이도

어려움10점 중 8점

유형
BFS, 시뮬레이션, 구현, 그리디
정답자
아직 제출이 없습니다

문제

아이스링크 위를 미끄러지는 퍽(puck)이 하나 있습니다. 매초에 한 번씩 퍽을 북쪽, 남쪽, 동쪽, 서쪽 중 한 방향에서 칠 수 있습니다. 어느 방향에서 치면 퍽의 속도가 그 반대 방향으로 초당 11 미터만큼 커집니다. 예를 들어 서쪽에서 치면 동쪽 방향 속도가 초당 11 미터 늘어나고, 남쪽에서 치면 북쪽 방향 속도가 초당 11 미터 늘어납니다. 처음에 퍽은 좌표 (0,0)(0, 0) 에 멈춰 있습니다.

이동 예시: 퍽을 다섯 번 칩니다. 서쪽에서, 남쪽에서, 다시 서쪽에서, 그리고 북쪽에서 두 번. 첫째 초 동안 퍽은 동쪽으로 11 미터 움직여 (1,0)(1, 0) 에 도착합니다. 둘째 초 동안 동쪽으로 11 미터, 북쪽으로 11 미터 움직여 (2,1)(2, 1) 에 도착합니다. 셋째 초 동안 동쪽으로 22 미터, 북쪽으로 11 미터 움직여 (4,2)(4, 2) 에 도착합니다. 넷째 초 동안 동쪽으로 22 미터 움직여 (6,2)(6, 2) 에 도착합니다. 다섯째 초 동안 동쪽으로 22 미터, 남쪽으로 11 미터 움직여 (8,1)(8, 1) 에 도착합니다.

매초 동안 퍽은 시작점에서 끝점까지 직선으로 움직입니다. 반드시 퍽을 칠 필요는 없으며, 치지 않으면 방향과 속력이 그대로 유지됩니다. 퍽의 최대 속력은 동서 방향과 남북 방향 각각 초당 77 미터입니다. 예를 들어 퍽이 지금 서쪽으로 초당 77 미터, 북쪽으로 초당 44 미터로 움직이고 있다면, 더 이상 동쪽에서는 칠 수 없지만 다른 방향에서는 칠 수 있습니다.

얼음판 위에는 장애물도 놓여 있습니다. 장애물은 정수 좌표를 가진 점에 세워진 막대입니다.

목표는 어떤 장애물도 건드리지 않고 퍽을 주어진 목표 지점까지 가능한 한 빠르게 옮기는 것입니다. 편의상 막대와 퍽은 모두 크기가 없는 점이라고 가정하며, 정확히 같은 점에 있을 때에만 서로 닿는 것으로 봅니다. 퍽이 어떤 장애물이 있는 점에서 그 초의 이동을 끝내거나, 이동 경로가 그런 점을 지나가면 장애물을 건드린 것으로 칩니다.

퍽이 목표 지점에서 반드시 멈춰 있을 필요는 없지만, 해당 초의 이동을 반드시 그 목표 지점에서 끝내야 합니다.

입력

첫째 줄에 세 정수가 주어집니다. 목표 지점의 두 좌표와 장애물의 개수 NN (최대 100100) 입니다. 이어지는 NN 개의 줄에는 각각 두 정수가 주어지며, 이는 한 장애물의 위치를 나타냅니다. 입력의 모든 좌표는 −10-10 이상 1010 이하의 정수입니다.

출력

정확히 한 개의 정수를 출력합니다. 목표 지점에 도달하는 데 필요한 최소 시간(초)입니다. 목표 지점에 도달할 수 없으면 −1-1 을 출력합니다.

힌트

첫 번째 예제의 경우, 매초 다음과 같이 퍽을 쳐서 55 초 만에 목표 지점 (0,5)(0, 5) 에 도달할 수 있습니다: 서쪽, 동쪽, 남쪽, 남쪽, 동쪽.

예제3

  1. 예제 1

    입력
    0 5 5
    -1 0
    -1 4
    0 4
    1 4
    2 3
    
    예상 출력
    5
    
  2. 예제 2

    입력
    1 0 0
    
    예상 출력
    1
    
  3. 예제 3

    입력
    2 2 1
    2 2
    
    예상 출력
    -1