题目描述:
FJ的n头奶牛(1<=n<=50000)在被放养在一维的牧场。第i头奶牛站在位置x(i),并且x(i)处有一个高度值h(i)(1<=x(i),h(i)<=1000000000)。
一头奶牛感觉到拥挤当且仅当它的左右两端都有一头奶牛所在的高度至少是它的2倍,且和它的距离最多为D。尽管感到拥挤的奶牛会产生更少的牛奶,FJ还是想知道一共有多上感到拥挤的奶牛。请你帮助他。
输入:
第一行:两个整数n和D。
第二行到第n+1行:每一行有两个数表示x(i)和h(i)。
输出:
一个数k表示感到拥挤的奶牛的数量。
输入样例:
6 4
10 3
6 2
5 3
9 7
3 6
11 2
输出样例:
2
思路分析:
当我们看到这一道题时,我们应该知道这是求区间内的最大值,我们就应该想到用单调队列(如果不懂单调队列)解决了,我们可以维护一个不下降队列,从左到右依次遍历,再用一个数组存储满足条件的情况,最后倒着遍历用ans记录个数就可以得出答案了。
代码实现:
#include<