CF997E Good Subsegments
题目描述
一个长度为 $n$ 的排列 $p$ 是一个由 $n$ 个互不相同的整数构成的序列 $p_1, p_2, \ldots, p_n$,其中每个整数都在 $1$ 到 $n$ 之间($1 \leq p_i \leq n$)。
我们称排列的子区间 $[l, r]$ 是“好”的,如果该区间内的所有数从最小值到最大值之间的每个整数都出现在 $p_l, p_{l+1}, \dots, p_r$ 中。
例如,排列 $[1, 3, 2, 5, 4]$ 的“好”区间有:
- $[1, 1]$,
- $[1, 3]$,
- $[1, 5]$,
- $[2, 2]$,
- $[2, 3]$,
- $[2, 5]$,
- $[3, 3]$,
- $[4, 4]$,
- $[4, 5]$,
- $[5, 5]$。
给定一个排列 $p_1, p_2, \ldots, p_n$。
你需要回答 $q$ 个询问,每个询问的形式为:对于排列的某个区间,求该区间内“好”子区间的数量。
换句话说,对于每个询问,你需要计算给定区间 $[l, r]$ 内,所有满足 $l \leq x \leq y \leq r$ 的“好”子区间 $[x, y]$ 的个数。
输入格式
第一行包含一个整数 $n$($1 \leq n \leq 120000$),表示排列的元素个数。
第二行包含 $n$ 个互不相同的整数 $p_1, p_2, \ldots, p_n$,用空格分隔($1 \leq p_i \leq n$)。
第三行包含一个整数 $q$($1 \leq q \leq 120000$),表示询问的个数。
接下来的 $q$ 行,每行包含两个整数 $l$ 和 $r$,用空格分隔($1 \leq l \leq r \leq n$),表示一次询问。
输出格式
输出 $q$ 行,第 $i$ 行输出第 $i$ 个询问对应区间内“好”子区间的数量。
说明/提示
由 ChatGPT 4.1 翻译