编程题
### 问题描述 小蓝和小红一起去爬山,山上有 $n$ 个休息点。他们拿到一张地图,地图上标注了每个休息点的高度,编号从 $1$ 到 $n$。 小蓝根据地图上的高度信息,将相邻的休息点用直线连接起来,形成了一条折线图。小红观察到折线图上有一些峰值。峰值指的是一个休息点的高度同时大于其两侧的休息点,设每个点的高度为 $a[i]$,即满足条件 $a[i]>a[i-1]$ 且 $a[i]>a[i+1]$。需要注意的是,折线图的边界点(即第一个和最后一个休息点)不是峰。 现在小红给出了 $q$ 个查询任务,每个任务由两个休息点的位置 $[l,r]$ 组成。小蓝的任务是计算在这两个休息点之间有多少个峰(不包括 $a[l]$ 和 $a[r]$)。 现在你是小蓝,你能编写一个程序来解决这个问题吗? ### 输入格式 第一行输入一个正整数 $n$,表示休息点的个数。 第二行输入 $n$ 个数字,代表 $1\sim n$ 号各个休息点的高度。 第三行输入一个 $q$,表示查询组数。 接下来 $q$ 行,每行输入 $2$ 个正整数 $[l,r]$,如题意所述。 ### 输出格式 输出 $q$ 行,每行一个正整数,为区间内山峰数量。 ### 样例输入 ```text 6 1 3 8 4 9 1 3 1 5 3 5 1 6 ``` ### 样例输出 ```text 1 0 2 ``` ### 说明 第一组测试用例如图所示: ![图片描述](https://dn-simplecloud.shiyanlou.com/questions/uid1664054-20230714-1689280531996) 因为边界不算峰,所以只有一个峰。 第二组测试用例如图所示: ![图片描述](https://dn-simplecloud.shiyanlou.com/questions/uid1664054-20230714-1689282056523) 第三组测试用例如图所示: ![图片描述](https://dn-simplecloud.shiyanlou.com/questions/uid1664054-20230714-1689282129829) ### 评测数据规模 $1\le n \le 10^5,1\le q \le 10^5,1\le a[i]\le 10^5,1\le l\le r\le n$。
查看答案
赣ICP备20007335号-2