만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

풍선 터뜨리기

면접 대비

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

요약
왼쪽에서 오른쪽으로 놓인 풍선의 높이가 주어질 때, 화살 하나가 높이를 1씩 낮추며 쏘는 방식으로 모든 풍선을 터뜨리는 최소 화살 수를 구합니다.
난이도

보통10점 중 5점

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

문제

ICPC 지역 예선 시상식이 끝난 뒤 컨벤션 홀에 수많은 풍선이 떠다니고 있다. 홀 관리자는 내일 다른 행사가 열려서 풍선을 모두 치워야 하기 때문에 화가 나 있다. 다행히 올해는 Carlinhos가 활과 화살을 챙겨 와서 풍선을 터뜨릴 수 있다. 또 공조 기류 덕분에 풍선들은 모두 같은 수직 평면(벽과 평행한 평면)에 있다. 다만 높이와 위치는 풍선마다 다르다.

Carlinhos는 홀의 왼쪽에서 자신이 고른 높이로 홀의 오른쪽 방향을 향해 화살을 쏜다. 각 화살은 쏜 높이를 유지한 채 풍선이 있는 평면 안에서 왼쪽에서 오른쪽으로 움직인다. 화살이 풍선에 닿으면 풍선이 터지고, 화살은 높이가 11 줄어든 상태로 오른쪽으로 계속 움직인다. 화살의 높이가 HH였다면 풍선을 터뜨린 뒤에는 높이 H−1H - 1에서 이어서 움직인다.

Carlinhos는 가능한 한 적은 수의 화살로 모든 풍선을 터뜨리려 한다. 그 최소 개수를 구해 보자.

입력

첫 줄에 풍선의 개수 NN이 주어진다 (1≤N≤5×1051 \le N \le 5 \times 10^5). 모든 풍선이 같은 수직 평면에 있으므로 풍선의 높이는 yy축을 기준으로, 위치는 xx축을 기준으로 나타낸다. 풍선은 높이와 관계없이 위치 순서대로 왼쪽 끝(풍선 11)부터 오른쪽 끝(풍선 NN)까지 11부터 NN까지 번호가 붙어 있다. 모든 ii에 대해 풍선 ii의 위치는 풍선 i+1i+1의 위치와 다르다.

둘째 줄에는 NN개의 정수 H1,H2,…,HNH_1, H_2, \ldots, H_N이 주어진다. HiH_i는 풍선 ii의 높이이다 (1≤Hi≤1061 \le H_i \le 10^6).

출력

모든 풍선을 터뜨리는 데 필요한 화살의 최소 개수를 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    5
    3 2 1 5 4
    
    예상 출력
    2
    
  2. 예제 2

    입력
    4
    1 2 3 4
    
    예상 출력
    4
    
  3. 예제 3

    입력
    6
    5 3 2 4 6 1
    
    예상 출력
    3