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

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

같은 최댓값

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

요약
i<=j<k<=l이고 a[i..j]의 최댓값과 a[k..l]의 최댓값이 같은 네 인덱스의 개수를 1e9+7로 나눈 나머지로 구한다. n은 최대 100000이다.
난이도

어려움10점 중 8점

유형
배열, 스택, 조합론, 구현
정답자
아직 제출이 없습니다

문제

Sasha는 프로그래밍 대회를 준비하면서 자료 구조와 관련 문제를 공부하고 있다. 그가 자주 본 문제 중 하나는 구간 최댓값 쿼리(Range Maximum Query)이다.

그 문제는 다음과 같이 정의된다. nn개의 정수로 이루어진 배열 aa가 있다: a1,a2,…,ana_1, a_2, \ldots, a_n. "ii번째 원소부터 jj번째 원소까지의 구간에서 최댓값을 구하라"는 쿼리에 답해야 하므로, 계산할 값은 max⁡{ai,ai+1,…,aj}\max \{a_i, a_{i+1}, \ldots, a_j\}이다.

물론 Sasha에게 이 문제는 어렵지 않았고, 곧 이런 쿼리에 답하는 매우 빠른 프로그램을 만들었다. 답을 보던 그는 서로 다른 쿼리의 답이 자주 같다는 것을 알아차렸다.

이제 Sasha는 최댓값이 같은 두 개의 겹치지 않는 구간을 고르는 방법이 몇 가지인지 궁금해졌다.

여러분의 임무는 Sasha를 돕는 것이다. 1≤i≤j<k≤l≤n1 \le i \le j < k \le l \le n이고 max⁡{ai,ai+1,…,aj}=max⁡{ak,ak+1,…,al}\max\{a_i, a_{i+1}, \ldots, a_j\} = \max\{a_k, a_{k+1}, \ldots, a_l\}인 네 정수 ii, jj, kk, ll의 개수를 구하라. 그 수는 매우 클 수 있으므로 1 000 000 0071\,000\,000\,007로 나눈 나머지를 출력해야 한다.

입력

첫째 줄에 Sasha의 배열 길이 nn이 주어진다 (2≤n≤100 0002 \le n \le 100\,000). 둘째 줄에 배열의 원소 nn개가 주어진다. 원소는 양수이며 10910^9를 넘지 않는다.

출력

최댓값이 같은 겹치지 않는 구간 쌍의 개수를 109+710^9 + 7로 나눈 나머지를 출력한다.

힌트

첫 번째 예제의 구간 쌍:

 [3],[3],4,4,3,2[\mathbf{3}], [\mathbf{3}], 4, 4, 3, 2  i=1i=1  j=1j=1  k=2k=2  l=2l=2 
 [3],3,4,4,[3],2[\mathbf{3}], 3, 4, 4, [\mathbf{3}], 2  i=1i=1  j=1j=1  k=5k=5  l=5l=5 
 [3],3,4,4,[3,2][\mathbf{3}], 3, 4, 4, [\mathbf{3}, 2] i=1i=1  j=1j=1  k=5k=5  l=6l=6 
 [3,3],4,4,[3],2[\mathbf{3}, \mathbf{3}], 4, 4, [\mathbf{3}], 2  i=1i=1  j=2j=2  k=5k=5  l=5l=5 
 [3,3],4,4,[3,2][\mathbf{3}, \mathbf{3}], 4, 4, [\mathbf{3}, 2]  i=1i=1  j=2j=2  k=5k=5  l=6l=6 
 3,[3],4,4,[3],23, [\mathbf{3}], 4, 4, [\mathbf{3}], 2  i=2i=2  j=2j=2  k=5k=5  l=5l=5 
 3,[3],4,4,[3,2]3, [\mathbf{3}], 4, 4, [\mathbf{3}, 2]  i=2i=2  j=2j=2  k=5k=5  l=6l=6 
 [3,3,4],[4],3,2[3, 3, \mathbf{4}], [\mathbf{4}], 3, 2  i=1i=1  j=3j=3  k=4k=4  l=4l=4 
 [3,3,4],[4,3],2[3, 3, \mathbf{4}], [\mathbf{4}, 3], 2  i=1i=1  j=3j=3  k=4k=4  l=5l=5 
 [3,3,4],[4,3,2][3, 3, \mathbf{4}], [\mathbf{4}, 3, 2]  i=1i=1  j=3j=3  k=4k=4  l=6l=6 
 3,[3,4],[4],3,23, [3, \mathbf{4}], [\mathbf{4}], 3, 2  i=2i=2  j=3j=3  k=4k=4  l=4l=4 
 3,[3,4],[4,3],23, [3, \mathbf{4}], [\mathbf{4}, 3], 2  i=2i=2  j=3j=3  k=4k=4  l=5l=5 
 3,[3,4],[4,3,2]3, [3, \mathbf{4}], [\mathbf{4}, 3, 2]  i=2i=2  j=3j=3  k=4k=4  l=6l=6 
 3,3,[4],[4],3,23, 3, [\mathbf{4}], [\mathbf{4}], 3, 2  i=3i=3  j=3j=3  k=4k=4  l=4l=4 
 3,3,[4],[4,3],23, 3, [\mathbf{4}], [\mathbf{4}, 3], 2  i=3i=3  j=3j=3  k=4k=4  l=5l=5 
 3,3,[4],[4,3,2]3, 3, [\mathbf{4}], [\mathbf{4}, 3, 2]  i=3i=3  j=3j=3  k=4k=4  l=6l=6 

예제2

  1. 예제 1

    입력
    6
    3 3 4 4 3 2
    
    예상 출력
    16
    
  2. 예제 2

    입력
    12
    1 3 2 3 4 1 3 4 3 2 2 5
    
    예상 출력
    177