对于每一个i找到最近的j满足最大值-最小值>K,对答案的贡献为j-i,用单调队列维护最值即可

#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cmath>
#include<map>
#define ll long long
using namespace std;
const int maxn=,inf=1e9;
int n,m,l,r,L,R,K;
int q[maxn],Q[maxn],a[maxn];
ll ans;
void read(int &k)
{
int f=;k=;char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(c<=''&&c>='')k=k*+c-'',c=getchar();
k*=f;
}
int main()
{
read(n);read(K);
for(int i=;i<=n;i++)read(a[i]);
l=;r=;L=;R=;
for(int i=,j=;i<=n;i++)
{
while(j<=n)
{
while(l<=r&&a[q[r]]>=a[j])r--;
while(L<=R&&a[Q[R]]<=a[j])R--;
q[++r]=Q[++R]=j;
if(a[Q[L]]-a[q[l]]>K)break;
j++;
}
ans+=j-i;
q[l]==i&&(l++);Q[L]==i&&(L++);
}
printf("%lld\n",ans);
return ;
}

最新文章

  1. 开发维护大型 Java 项目的建议
  2. [No000089]String的(补空位)左对齐,(补空位)右对齐
  3. location.hash详解
  4. 《2016ThoughtWorks技术雷达峰会----微服务架构》
  5. Codeforces 620E New Year Tree(DFS序 + 线段树)
  6. Jump Game II
  7. MFC编程入门之五(MFC消息映射机制概述)
  8. Guava官方文档-RateLimiter类
  9. Delphi ComboBox的属性和事件、及几个鼠标事件的触发
  10. php执行shell更新svn文件的方法
  11. Nginx运行Laravel的配置
  12. cookie和session的区别异同
  13. Java基础知识二次学习-- 第二章 基础语法与递归补充
  14. Rhythmbox音乐播放器常见问题
  15. 13.Linux键盘驱动 (详解)
  16. Linux PHP多版本切换 超简单办法
  17. android下ViewPager的使用,带下部选项栏的切换动画
  18. python学习:常量和变量
  19. [宽度优先搜索] FZU-2150 Fire Game
  20. 11G新特性 -- 分区表和增量统计信息

热门文章

  1. 「Python」Numpy equivalent of MATLAB&#39;s cell array
  2. 在nginx环境下,直接用域名访问(首页)
  3. Objective-C 构造方法 分类 类的深入研究
  4. Objective-C 封装 继承 多态
  5. Java开发工程师(Web方向) - 02.Servlet技术 - 第4章.JSP
  6. JDK源码分析:Integer.java部分源码解析
  7. JavaScript 作用域链范例
  8. 【MySQL解惑笔记】Centos7下卸载彻底MySQL数据库
  9. Spring MVC 整合Swagger的一些问题总结
  10. mac mysql连接报错ERROR 1045 (28000): Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES)