점프
시간 제한2초메모리 제한128 MB
매 점프 길이가 이전 점프에서 최대 1만큼 변하는 규칙 아래, 막힌 돌들을 피해 1번 돌에서 N번 돌까지 가는 최소 점프 수를 구합니다.
문제
같은 간격으로 놓인 돌 N개가 있다. 돌은 앞에서부터 1, 2, ..., N번이라고 부른다. 당신은 처음에 1번 돌 위에 있으며, 아래 조건을 지키며 N번 돌까지 이동하려고 한다.
- 점프는 항상 번호가 커지는 방향으로만 할 수 있다.
- 첫 점프는 반드시 한 칸이어야 하므로 1번 돌에서 2번 돌로 이동한다. 그다음부터는 직전 점프가
x칸이었다면 다음 점프는x-1,x,x+1칸 중 하나를 선택할 수 있다. 모든 점프 거리는 1칸 이상이어야 한다. - 몇몇 돌은 너무 작아서 올라설 수 없다.
조건을 모두 만족하면서 1번 돌에서 N번 돌까지 가는 데 필요한 최소 점프 횟수를 구하시오. 도착할 수 없다면 -1을 출력한다.
입력
첫째 줄에 두 정수 N, M이 주어진다. N은 돌의 개수이고, M은 올라설 수 없는 작은 돌의 개수이다.
2 <= N <= 10,000, 0 <= M <= N-2이다.
다음 M개의 줄에는 작은 돌의 번호가 하나씩 주어진다. 1번 돌과 N번 돌은 항상 올라설 수 있다.
출력
N번 돌까지 이동하는 데 필요한 최소 점프 횟수를 출력한다. 이동할 수 없다면 -1을 출력한다.