4493: 饮水计划

内存限制:256 MB 时间限制:4 S
题面:传统 评测方式:文本比较 上传者:
提交:4 通过:1

题目描述

Nanarikom 在努力练习多喝水。

非常惭愧,尽管独立生活了这么多年,Nanarikom 仍然没有办法很好地照顾自己。Nanarikom 制定了喝水计划,下定决心要改变这一现状。

对于连续的 mm 天,假设长度为 mm 的序列 b_1, b_2, \dots, b_mb1,b2,,bm 表示第 ii 天的喝水量为 b_ibi 单位。如果存在 1 \leq k < m1k<m 使得 \max_{i=1}^{k} b_i \leq \min_{i=k+1}^{m} b_imaxi=1kbimini=k+1mbi,则 Nanarikom 认为 kk 是 bb 序列上的一个 milestone。Nanarikom 记函数 f(b)f(b) 表示 bb 序列上 milestone 的数量,以此衡量自己的进步。

现在,Nanarikom 已经记录了自己连续 nn 天的实际喝水量 a_1, a_2, \dots, a_na1,a2,,an。Nanarikom 想进行 qq 次询问,第 ii 次询问给定 l_i, r_ili,ri 查询 f(a[l_i;r_i])f(a[li;ri]) 的值。其中,记号 a[l;r]a[l;r] 表示 aa 在区间 [l, r][l,r] 上的子段 a_l, a_{l+1}, a_{l+2}, \dots, a_ral,al+1,al+2,,ar

你需要回答 Nanarikom 的 TT 组询问。

输入格式

第一行包含一个整数 TT1 \leq T \leq 31T3),代表测试数据组数。对于每组测试数据:

  • 第一行包含两个整数 nnqq1 \leq n \leq 20001n20001 \leq q \leq \frac{n(n+1)}{2}1q2n(n+1)),分别代表已记录的天数和询问的数量;
  • 第二行包含 nn 个整数 a_1, a_2, \dots, a_na1,a2,,an1 \leq a_i \leq 10^91ai109),代表每天的喝水量。方便起见,输入数据保证 a_iai 两两不同,即不存在两个不同的下标 xxyy 使得 a_x = a_yax=ay
  • 接下来的 qq 行中,第 ii 行包含两个整数 l_ilir_iri1 \leq l_i \leq r_i \leq n1lirin),代表每次询问的区间。

输出格式

对于每组测试数据的每次询问,输出一行一个整数,代表查询区间内 milestone 的数量。

输入样例 复制

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

输出样例 复制

1
2
1
2

数据范围与提示

由于数据量较大,请注意 I/O 效率。