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

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

오름차순 사진

시간 제한3초메모리 제한512 MB

요약
높이 수열이 주어질 때, 조각을 재배열해 감소하지 않는 수열로 만들기 위한 최소 절단 횟수를 구한다.
난이도

어려움10점 중 8점

유형
그리디, 정렬, 동적 계획법, 배열
정답자
아직 제출이 없습니다

문제

아마추어 등반 동호회가 오늘 100번째 등정을 마쳤다. 이를 기념해 회원 전원이 한 줄로 서서 사진을 한 장 찍었다.

그런데 줄이 엉망이다. 회원들이 내키는 자리에 그냥 섰기 때문이다. 왼쪽에서 오른쪽으로 갈수록 키가 줄어들지 않도록 사진을 다시 배치하려고 한다.

그림: 첫 번째 예제의 답을 만들려고 사진을 자른 뒤 다시 붙인 모습이다.

할 수 있는 일은 인화한 사진을 이웃한 두 사람 사이에서 세로로 자르고, 잘라낸 조각을 원하는 순서로 다시 붙이는 것뿐이다. 한 조각 안에서 사람의 순서는 바뀌지 않는다.

조각을 다시 붙여 키가 왼쪽에서 오른쪽으로 감소하지 않는 한 줄을 만들 때, 필요한 자르기 횟수의 최솟값을 구하여라.

입력

  • 첫째 줄에 사진에 찍힌 사람 수 nn이 주어진다. (1≤n≤1061 \le n \le 10^6)
  • 둘째 줄에 왼쪽부터 차례대로 각 사람의 키 h1,…,hnh_1, \dots, h_n이 주어진다. (1≤hi≤2×1091 \le h_i \le 2 \times 10^9)

출력

조각을 다시 붙여 키가 왼쪽에서 오른쪽으로 감소하지 않는 한 줄을 만드는 데 필요한 자르기 횟수의 최솟값을 출력한다.

예제3

  1. 예제 1

    입력
    11
    3 6 12 7 7 7 7 8 10 5 5
    
    예상 출력
    4
    
  2. 예제 2

    입력
    3
    5000000 5500000 7000000
    
    예상 출력
    0
    
  3. 예제 3

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