문제
정올시에서는 로봇 알고리즘 대회 개최를 위하여, 일렬로 들어선 오래된 건물들을 철거 하려고 한다. 최초 계획은 각 건물을 하나씩 제거하려 했지만 시간문제로 조금 더 빠른 방법을 모색하게 되었다.
로봇 개발의 대가 서현이는 최근 강력한 레이저 대포를 장착한 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