| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1 초 | 1024 MB | 231 | 75 | 57 | 30.978% |
팁오버는 $6 \times 6$ 크기의 보드판에 다양한 높이의 블록을 배치한 다음 그것들을 쓰러뜨려 주인공이 출발지에서 목적지까지 이동할 수 있게 만드는 퍼즐 게임이다. 어느 날 이 퍼즐을 풀던 시헌이는 지루해지기 시작했고, 다음과 같은 $1$차원 팁오버 게임을 생각해냈다.
하지만 시헌이는 게임을 클리어할 수 없는 배치가 존재한다는 것을 깨달았다. 그래서 시헌이는 게임에 다음과 같은 규칙을 추가했다.
시헌이는 자신이 만든 보드판에서 게임을 진행할 때 큐브 블록이 최소한 몇 개나 있어야 게임을 클리어할 수 있는지 궁금해졌다. 당신은 이 문제를 해결해야 한다.
첫째 줄에 $N$이 주어진다. $(3 \le N \le 300\,000)$ 둘째 줄에 $N$개의 정수 $A_1, A_2, \ldots, A_N$이 공백으로 구분되어 주어진다. $A_i$는 $2$ 이상 $N$ 이하의 정수 또는 $0$이다. $A_i = 0$인 경우 처음에 $i$번 칸에 블록이 존재하지 않는 것이고, $A_i > 0$인 경우 처음에 $i$번 칸에 높이가 $A_i$인 블록이 존재하는 것이다.
미리 몇 개의 블록을 쓰러뜨릴 수 있을 때 시헌이가 게임을 클리어하기 위해 추가해야 하는 큐브 블록의 최소 개수를 출력한다.
12 0 0 2 0 3 0 0 0 0 2 0 2
5
해당하는 보드판은 다음과 같다. (색깔은 이해를 돕기 위한 것으로 문제와는 무관하다.)
여기서 $3$번 칸에 놓인 블록을 왼쪽으로 쓰러뜨리고 $5$번 칸에 놓인 블록을 오른쪽으로 쓰러뜨리면 다음과 같이 된다.
이제 $3$, $4$, $5$, $9$, $11$번 칸에 큐브 블록을 놓으면 게임을 클리어할 수 있다.
다른 방법으로 $3$번, $10$번, $12$번 칸에 놓인 블록을 왼쪽으로 쓰러뜨리는 경우, $4$, $6$, $7$, $8$, $12$번 칸에 큐브 블록을 놓으면 게임을 클리어할 수 있다.
두 가지 경우에 사용하는 큐브 블록은 $5$개이며, 이것이 최소 개수이다.