아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

개막식

면접 대비

시간 제한1초메모리 제한256 MB

요약
각 블록 높이가 주어질 때 블록 단위 발사와 층 단위 발사로 모든 블록을 없애는 최소 발사 횟수를 구합니다.
난이도

보통10점 중 5점

유형
정렬, 그리디
정답자
아직 제출이 없습니다

문제

NlogNsglow에서 열리는 알고리즘 경기의 개막식을 위해, 한 줄로 늘어선 타워 블록을 모두 철거하는 시범을 준비한다. 처음 계획은 블록마다 폭발을 한 번씩 일으켜 무너뜨리는 것이었지만, 시간이 부족해 더 빠른 방법이 필요하다.

블록을 더 빨리 없애려고 범용 운동 / 백열 에너지 입자포(UKIEPC)를 쓸 수 있다. 이 장비는 한 번 충전할 때마다 다음 두 가지 중 하나를 할 수 있다.

  • 블록 하나를 골라 그 블록의 모든 층을 없앤다.
  • 층 번호 xx를 골라 모든 블록의 xx번째 층을 동시에 없앤다.

두 번째 방식에서 층수가 xx보다 적은 블록은 그대로 남는다. 층수가 xx보다 많은 블록은 없어진 xx번째 층 위의 모든 층이 한 칸씩 내려앉는다.

모든 블록의 층수가 주어질 때, 모든 블록의 모든 층을 없애는 데 필요한 최소 충전 횟수를 구하라.

입력

첫째 줄에 블록의 개수 nn이 주어진다. 2≤n≤1000002 \le n \le 100000이다.

둘째 줄에 블록의 층수 h1,h2,…,hnh_1, h_2, \dots, h_n이 왼쪽부터 순서대로 주어진다. 1≤hi≤10000001 \le h_i \le 1000000이다.

출력

모든 블록을 완전히 허무는 데 필요한 최소 충전 횟수를 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    6
    2 1 8 8 2 3
    
    예상 출력
    5
    
  2. 예제 2

    입력
    5
    1 1 1 1 10
    
    예상 출력
    2