페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#3053

철거 1s 128MB

문제

정올시에서는 로봇 알고리즘 대회 개최를 위하여, 일렬로 들어선 오래된 건물들을 철거 하려고 한다. 최초 계획은 각 건물을 하나씩 제거하려 했지만 시간문제로 조금 더 빠른 방법을 모색하게 되었다.

 

로봇 개발의 대가 서현이는 최근 강력한 레이저 대포를 장착한 CannonBot를 개발하였는데 이 대포를 이용하는 것이 제안되었다. CannonBot은 강력한 파괴력 때문에 충전하면 한 번만 발사할 수 있는데 한 번의 발사로 건물 하나를 크기에 상관없이 제거하거나 모든 건물의 K번째 층을 한꺼번에 제거할 수 있다. 모든 건물의 K번째 층을 제거하는 경우 그 층보다 낮은 건물은 그대로 있고 K층 이상의 건물들만 한 층씩 주저앉아 내려온다.

 

각 타워들의 층수가 주어질 때, 모든 블록들을 제거하기 위한 최소의 CannonBot 충전 횟수를 구하시오. 

 


입력

첫줄에는 타워의 수 n(2 ≤ n ≤ 100,000)가, 두 번째 줄에는 n개의 타워에 대한 각각의 블록의 수 hi (1 ≤ hi ≤ 1,000,000)가 주어진다.

출력

출력은 하나의 줄에 모든 블록을 제거할 수 있는 최소의 충전 횟수를 출력 하시오.

예제 #1

6

2 1 8 8 2 3
5

예제 #2

5

1 1 1 1 10
2

출처

NCPC2014 Opening Ceremony
로그인해야 코드를 작성할 수 있어요.