60007 장애물 Silver V

시간 제한: 1초 메모리 제한: 2048MB

문제

위치 0에서 시작하여 수직선 위의 장애물 N개(위치 X_1 < X_2 < … < X_N)를 모두 넘어가야 한다. 다음 두 가지 행동만 가능하다.

  • 오른쪽으로 1만큼 걸어가기
  • 오른쪽으로 2만큼 점프하기

장애물을 넘어간다는 것은 위치 X_i - 1에서 점프하여 X_i + 1에 도착하는 것을 의미한다. 모든 장애물을 최소 이동 횟수로 넘기거나 불가능함을 판단하시오.

입력

첫째 줄에 정수 N (1 ≤ N ≤ 250,000)이 주어진다.

둘째 줄에 N개의 정수 X_1, X_2, …, X_N이 주어진다. (1 ≤ X_1 < X_2 < … < X_N ≤ 250,000)

출력

모든 장애물을 넘을 수 없으면 -1, 가능하면 최소 이동 횟수를 출력한다.

예제 입출력

예제 입력 1
3
2 5 11
예제 출력 1
7
예제 입력 2
3
7 20 25
예제 출력 2
14
예제 입력 3
4
1 4 5 8
예제 출력 3
-1
solution.cpp
에디터 불러오는 중...