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

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

가시성

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

요약
수열이 주어질 때, 사이의 모든 원소가 두 끝값보다 작으면 서로 직접 보인다고 정의하고, 이 관계의 추이적 폐포로 연결되는 쌍의 개수를 센다.
난이도

보통10점 중 7점

유형
스택, 그래프, 유니온 파인드, 그리디
정답자
아직 제출이 없습니다

문제

정수로 이루어진 수열 x1,x2,…,xnx_1, x_2, \dots, x_n이 주어진다.

두 원소 xix_i와 xjx_j (1≤i<j≤n1 \le i < j \le n)가 서로 직접 보인다는 것은, 두 원소 사이에 있는 모든 원소 xi+1,…,xj−1x_{i+1}, \dots, x_{j-1}이 min⁡(xi,xj)\min(x_i, x_j)보다 작다는 뜻이다. 특히 이웃한 두 원소는 사이에 다른 원소가 없으므로 항상 서로 직접 보인다.

두 원소 xix_i와 xjx_j (1≤i<j≤n1 \le i < j \le n)가 서로 간접적으로 보인다는 것은 다음 두 조건 중 하나가 성립한다는 뜻이다.

  • 두 원소가 서로 직접 보이거나,
  • i<k<ji < k < j인 어떤 kk가 존재하여 xix_i와 xkx_k가 서로 직접 보이고, 동시에 xkx_k와 xjx_j도 서로 직접 보인다.

1≤i<j≤n1 \le i < j \le n이면서 xix_i와 xjx_j가 서로 간접적으로 보이는 쌍 (i,j)(i, j)의 개수를 구하여라.

입력

첫째 줄에 정수 nn (1≤n≤40 0001 \le n \le 40\,000)이 주어진다. 이어지는 nn개의 줄에는 수열의 원소가 순서대로 한 줄에 하나씩 주어지며, 각 원소는 −1 000 000-1\,000\,000 이상 1 000 0001\,000\,000 이하의 정수이다.

출력

1≤i<j≤n1 \le i < j \le n이면서 xix_i와 xjx_j가 서로 간접적으로 보이는 쌍 (i,j)(i, j)의 개수를 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    12
    2
    8
    3
    5
    2
    9
    7
    -1
    4
    8
    4
    12
    
    예상 출력
    42
    
  2. 예제 2

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