M - Cartesian Trees Editorial /

Time Limit: 3 sec / Memory Limit: 1024 MB

Score: 100 points

Problem Statement

You are given a permutation A = (A_1, A_2, \dots, A_N) of (1, 2, \dots, N).

For a pair of integers l, r (1 \le l \le r \le N), we define the Cartesian Tree \text{C}(l, r) as follows:

  • \text{C}(l, r) is a rooted binary tree with r - l + 1 nodes. We denote the root of this tree as \mathit{rt}.
  • Let m be the unique integer such that A_m = \min\lbrace A_l, A_{l+1}, \dots, A_r\rbrace.
  • If l < m, then the left subtree of \mathit{rt} is \text{C}(l, m-1). If l = m, then \mathit{rt} has no left child.
  • If m < r, then the right subtree of \mathit{rt} is \text{C}(m+1, r). If m = r, then \mathit{rt} has no right child.

You are given Q pairs of integers (l_1, r_1), (l_2, r_2), \dots, (l_Q, r_Q). Determine how many different Cartesian Trees are there among \text{C}(l_1, r_1), \text{C}(l_2, r_2), \dots, \text{C}(l_Q, r_Q).

Two Cartesian Trees X and Y are considered the same if and only if all of the following conditions are satisfied:

Let the root of X be \mathit{rt}_X, and the root of Y be \mathit{rt}_Y.

  • If \mathit{rt}_X has a left child, then \mathit{rt}_Y also has a left child and the left subtrees of \mathit{rt}_X and \mathit{rt}_Y are the same Cartesian Tree.
  • If \mathit{rt}_X has no left child, then \mathit{rt}_Y also has no left child.
  • If \mathit{rt}_X has a right child, then \mathit{rt}_Y also has a right child and the right subtrees of \mathit{rt}_X and \mathit{rt}_Y are the same Cartesian Tree.
  • If \mathit{rt}_X has no right child, then \mathit{rt}_Y also has no right child.

Constraints

  • All input values are integers.
  • 1 \le N \le 4 \times 10^5
  • A is a permutation of (1, 2, \dots, N).
  • 1 \le Q \le 4 \times 10^5
  • 1 \le l_i \le r_i \le N (1 \le i \le Q)
  • (l_i, r_i) \ne (l_j, r_j) (1 \le i < j \le Q)

Input

The input is given in the following format:

N
A_1 A_2 \ldots A_N
Q
l_1 r_1
l_2 r_2
\vdots
l_Q r_Q

Output

Print the answer.


Sample Input 1

6
1 4 2 6 3 5
3
1 4
2 5
3 6

Sample Output 1

2

\text{C}(1, 4), \text{C}(2, 5), \text{C}(3, 6) are the following Cartesian Trees:

\text{C}(1, 4) and \text{C}(3, 6) are the same Cartesian Tree, while \text{C}(2, 5) is a different Cartesian Tree from these. Therefore, there are 2 different Cartesian Trees.


Sample Input 2

4
1 2 3 4
10
1 1
2 2
3 3
4 4
1 2
2 3
3 4
1 3
2 4
1 4

Sample Output 2

4

Sample Input 3

10
3 8 4 7 2 5 9 10 1 6
13
5 8
2 6
7 9
3 8
3 5
2 4
4 6
1 9
3 7
6 9
2 10
4 9
3 9

Sample Output 3

11

配点 : 100

問題文

(1, 2, \dots, N) の順列 A = (A_1, A_2, \dots, A_N) が与えられます。
整数の組 l, r (1 \le l \le r \le N) に対し、Cartesian Tree \text{C}(l, r) を以下のように定義します。

  • \text{C}(l, r)r-l+1 頂点の根付きの二分木である。この木の根を \mathit{rt} と書くことにする。
  • 整数 m を、A_m = \min\lbrace A_l, A_{l+1}, \dots, A_r\rbrace を満たす唯一の整数とする。
  • l < m のとき、\mathit{rt} の左部分木は \text{C}(l, m-1) である。l = m のとき、\mathit{rt} に左の子は存在しない。
  • m < r のとき、\mathit{rt} の右部分木は \text{C}(m+1, r) である。m = r のとき、\mathit{rt} に右の子は存在しない。

Q 組の整数 (l_1, r_1), (l_2, r_2), \dots, (l_Q, r_Q) が与えられます。\text{C}(l_1, r_1), \text{C}(l_2, r_2), \dots, \text{C}(l_Q, r_Q) の中に Cartesian Tree が何種類あるかを求めてください。
ただし、2 つの Cartesian Tree X, Y は、以下の条件をすべて満たすとき、かつそのときに限り同じ Cartesian Tree であると見なされます。

X の根を \mathit{rt}_X と書き、Y の根を \mathit{rt}_Y と書くことにする。

  • \mathit{rt}_X に左の子が存在するならば、\mathit{rt}_Y にも左の子が存在し、「\mathit{rt}_X の左部分木」と「\mathit{rt}_Y の左部分木」は同じ Cartesian Tree である。
  • \mathit{rt}_X に左の子が存在しないならば、\mathit{rt}_Y の左の子も存在しない。
  • \mathit{rt}_X に右の子が存在するならば、\mathit{rt}_Y にも右の子が存在し、「\mathit{rt}_X の右部分木」と「\mathit{rt}_Y の右部分木」は同じ Cartesian Tree である。
  • \mathit{rt}_X に右の子が存在しないならば、\mathit{rt}_Y の右の子も存在しない。

制約

  • 入力はすべて整数
  • 1 \le N \le 4 \times 10^5
  • A(1, 2, \dots, N) の順列である。
  • 1 \le Q \le 4 \times 10^5
  • 1 \le l_i \le r_i \le N (1 \le i \le Q)
  • (l_i, r_i) \ne (l_j, r_j) (1 \le i < j \le Q)

入力

入力は以下の形式で与えられる。

N
A_1 A_2 \ldots A_N
Q
l_1 r_1
l_2 r_2
\vdots
l_Q r_Q

出力

答えを出力せよ。


入力例 1

6
1 4 2 6 3 5
3
1 4
2 5
3 6

出力例 1

2

\text{C}(1, 4), \text{C}(2, 5), \text{C}(3, 6) はそれぞれ以下のような Cartesian Tree です。

\text{C}(1, 4)\text{C}(3, 6) は同じ Cartesian Tree で、\text{C}(2, 5) はこれらとは異なる Cartesian Tree です。したがって、Cartesian Tree は 2 種類存在します。


入力例 2

4
1 2 3 4
10
1 1
2 2
3 3
4 4
1 2
2 3
3 4
1 3
2 4
1 4

出力例 2

4

入力例 3

10
3 8 4 7 2 5 9 10 1 6
13
5 8
2 6
7 9
3 8
3 5
2 4
4 6
1 9
3 7
6 9
2 10
4 9
3 9

出力例 3

11