옥상 정원 벤치마킹

면접 대비

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

요약
각 건물에서 오른쪽을 볼 때 자신보다 낮은 건물이 연속으로 몇 채 보이는지 세어 모두 더한다.
난이도

보통10점 중 7점

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

문제

옥상 정원

도시에 빌딩 NN개가 일렬로 서 있다. 왼쪽에서 ii번째 빌딩의 높이는 hih_i이다.

각 빌딩의 관리인은 성실해서 다른 빌딩의 옥상 정원을 벤치마킹하려고 한다. 모든 관리인은 자기 빌딩에서 오른쪽 방향으로만 볼 수 있으므로, ii번째 관리인은 처음에 i+1,i+2,…,Ni+1, i+2, \dots, N번째 빌딩의 옥상을 보려고 한다.

하지만 시야는 막힐 수 있다. 오른쪽을 보다가 자기 빌딩보다 높거나 같은 빌딩을 만나면, 그 빌딩과 그 뒤의 모든 빌딩은 보이지 않는다. 즉 ii번째 관리인은 자기보다 낮은 빌딩만 연속으로 볼 수 있고, 높이가 hih_i 이상인 빌딩을 처음 만나는 순간 시야가 막힌다(막는 그 빌딩도 세지 않는다).

모든 관리인이 벤치마킹할 수 있는 옥상 정원의 총 개수를 구하여라.

예를 들어 N=6N = 6이고 높이가 H={10,3,7,4,12,2}H = \{10, 3, 7, 4, 12, 2\}인 경우를 그림으로 나타내면 다음과 같다.

             = 
 =           = 
 =     -     = 
 =     =     =        -> 관리인이 보는 방향
 =  -  =  =  =   
 =  =  =  =  =  = 
10  3  7  4  12 2     -> 빌딩의 높이
[1][2][3][4][5][6]    -> 빌딩의 번호
  • 1번 관리인(높이 10)은 2, 3, 4번 빌딩을 볼 수 있지만, 5번 빌딩(높이 12)이 자기보다 높아 시야가 막힌다. → 3
  • 2번 관리인(높이 3)은 바로 오른쪽 3번 빌딩(높이 7)에 막혀 아무것도 볼 수 없다. → 0
  • 3번 관리인(높이 7)은 4번 빌딩만 볼 수 있고 5번 빌딩(높이 12)에서 막힌다. → 1
  • 4번 관리인(높이 4)은 바로 오른쪽 5번 빌딩(높이 12)에 막힌다. → 0
  • 5번 관리인(높이 12)은 6번 빌딩만 볼 수 있다. → 1
  • 6번 관리인은 마지막 빌딩이라 볼 대상이 없다. → 0

따라서 총합은 3+0+1+0+1+0=53 + 0 + 1 + 0 + 1 + 0 = 5이다.

입력

  • 첫 번째 줄에 빌딩의 개수 NN이 주어진다. (1≤N≤800001 \le N \le 80000)
  • 이어지는 NN개의 줄에 각 빌딩의 높이 hih_i가 한 줄에 하나씩 주어진다. (1≤hi≤1091 \le h_i \le 10^9)

출력

  • 모든 관리인이 벤치마킹할 수 있는 옥상 정원(빌딩)의 개수의 총합을 한 줄에 출력한다.

예제4

  1. 예제 1

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

    입력
    1
    5
    
    예상 출력
    0
    
  3. 예제 3

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

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