DESCRIPTION

There are nn buildings lined up, and the height of the ii-th house is hihi.

An inteval [l,r][l,r](l≤r)(l≤r) is harmonious if and only if max(hl,…,hr)−min(hl,…,hr)≤kmax(hl,…,hr)−min(hl,…,hr)≤k.

Now you need to calculate the number of harmonious intevals.

INPUT
The first line contains two integers n(1≤n≤2×105),k(0≤k≤109)n(1≤n≤2×105),k(0≤k≤109). The second line contains nn integers hi(1≤hi≤109)hi(1≤hi≤109).
OUTPUT
Print a line of one number which means the answer.
SAMPLE INPUT
3 1 1 2 3
SAMPLE OUTPUT
5
HINT
Harmonious intervals are: [1,1],[2,2],[3,3],[1,2],[2,3][1,1],[2,2],[3,3],[1,2],[2,3].
RMQ+二分
//Round 19 B;
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
#include <cstdlib>
#include <iomanip>
#include <cmath>
#include <ctime>
#include <map>
#include <set>
using namespace std;
#define lowbit(x) (x&(-x))
#define max(x,y) (x>y?x:y)
#define min(x,y) (x<y?x:y)
#define MAX 100000000000000000
#define MOD 1000000007
#define pi acos(-1.0)
#define ei exp(1)
#define PI 3.141592653589793238462
#define INF 0x3f3f3f3f3f
#define mem(a) (memset(a,0,sizeof(a)))
typedef long long ll;
int maxn[][],minn[][];
int a[];
int n,k,x;
void get_rmq()
{
for(int i=;i<=n;i++)
{
maxn[i][]=a[i];
minn[i][]=a[i];
}
for(int j=;(<<j)<=n;j++)
{
for(int i=;i+(<<j)-<=n;i++)
{
maxn[i][j]=max(maxn[i][j-],maxn[i+(<<(j-))][j-]);
minn[i][j]=min(minn[i][j-],minn[i+(<<(j-))][j-]);
}
}
}
bool rmq(int l,int r)
{
if(l>r) return ;
int f=int(log((double)(r-l+))/log(2.0));
return max(maxn[l][f],maxn[r-(<<f)+][f])-min(minn[l][f],minn[r-(<<f)+][f])<=k;
}
int main()
{
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
}
get_rmq();
ll ans=;
for(int i=;i<=n;i++)
{
int l=,r=i,mid,pos=i;
while(l<=r)
{
mid=(l+r)>>;
if(rmq(mid,i)) r=mid-,pos=mid;
else l=mid+;
}
ans+=i-pos+;
}
printf("%lld\n",ans);
return ;
}

最新文章

  1. 我们的动机(Our motivation)
  2. blogs for learning java
  3. win8启动文件夹
  4. 直接拿来用!超实用的Java数组技巧攻略
  5. 我为什么要进国企----HP大中华区总裁孙振耀退休感言
  6. grep命令实战
  7. 剑指OFFER之重建二叉树(九度OJ1385)
  8. 直接下载adobe的完整安装包
  9. PKU 1509 Glass Beads (最小表示法)
  10. HDU 4556 Stern-Brocot Tree
  11. 关于APIcloud对应C#的 wcf框架作为后台,实现多库功能
  12. Zara带你快速入门WPF(4)---Command与功能区控件
  13. python回归分析五部曲
  14. python-turtle 快给你的爷爷看看啥是 “小猪佩奇”
  15. 解决mybatis generator警告Cannot obtain primary key information from the database, generated objects may be incomplete
  16. Redis (error) NOAUTH Authentication required.解决方法
  17. web项目读取classpath路径下面的文件
  18. SDUT OJ 数据结构实验之串二:字符串匹配
  19. 我的Java开发学习之旅------&gt;System.nanoTime与System.currentTimeMillis的区别
  20. eclipse(java)&amp;nbsp;使用SQL&amp;nbsp;…

热门文章

  1. KNN分类器
  2. 基于CC2530的ZigBee转以太网网关的设计与实现
  3. Qt编译mysql以及创建表后进行导入操作
  4. 是时候抛弃web.xml了?
  5. 怎么在cmd中输入mysql就可以进去mysql控制台
  6. 推荐《深入浅出深度学习原理剖析与python实践》PDF+代码
  7. 关于vs2012/2013的C编译器生成的exe的向后兼容xp的问题
  8. php https链接
  9. LeetCode102 Binary Tree Level Order Traversal Java
  10. Objective-C_类的扩展