문제
당신은 친구들과 함께 운동장에서 장애물 뛰기 놀이를 하고 있다. 놀이는 수직선 위의 위치
당신의 목표는 수직선 위에 놓인
오른쪽으로
1 만큼 걸어간다. 즉, 위치x 에서 시작했다면x+1 에 도착한다.오른쪽으로
2 만큼 점프한다. 즉, 위치x 에서 시작했다면x+2 에 도착한다.
장애물을 뛰어넘었다는 것은, 장애물을 점프로 넘어갔다는 것을 뜻한다. 다시 말해, 위치
예를 들어, 아래 그림과 같이 수직선 위의 위치
다음과 같은 방법들로 장애물을 모두 넘어갈 수 있다. 아래에서
방법 1:
0→1⟹3→4⟹6→7⟹9→10⟹12 (8회 이동, 장애물 3개 넘음)
방법 2:
0→1⟹3→4⟹6⟹8⟹10⟹12 (7회 이동, 장애물 3개 넘음)
하지만, 다음과 같은 방법들은 장애물을 모두 넘어갈 수 없다.
방법 3:
0⟹2⟹4⟹6⟹8⟹10⟹12 (6회 이동, 장애물 2개 넘음)
방법 4:
0→1⟹3⟹5⟹7⟹9→10⟹12 (7회 이동, 장애물 2개 넘음)
방법 5:
0→1⟹3→4→5⟹7 (5회 이동, 장애물 1개 넘음)
각 예시에서, 이동 횟수는 걸어간 횟수와 점프한 횟수의 합이다. 이 예시에서, 방법 2가 최소 이동 횟수로 장애물을 모두 넘어갈 수 있는 최적의 방법이다.
당신은 이동 횟수를 최소화하여 모든 장애물을 넘어가는 최적의 방법을 찾고자 한다. 단, 주어진 두 행동만으로 모든 장애물을 넘어가는 것이 불가능한 경우도 있다.
입력
첫 번째 줄에는
두 번째 줄에는
[제약 조건]
주어지는 모든 수는 정수이다.
1≤N≤250\ 000 1≤X_1<X_2<...<X_N≤250 000
출력
모든 장애물을 넘어갈 수 없다면, -1을 출력한다.
모든 장애물을 넘어갈 수 있다면, 모든 장애물을 넘기 위해 필요한 최소 이동 횟수를 출력한다.
부분문제
| 번호 | 점수 | 조건 |
|---|---|---|
| #1 | 7점 | |
| #2 | 12점 | |
| #3 | 23점 | |
| #4 | 58점 | 추가 제약 조건 없음. |
예제 #1
3
2 5 11
7
예제 #2
3
7 20 25
14
예제 #3
4
1 4 5 8
-1