2096: [Poi2010]Pilots

Time Limit: 30 Sec  Memory Limit: 162 MB
Submit: 983  Solved: 513
[Submit][Status][Discuss]

Description

Tz又耍畸形了!!他要当飞行员,他拿到了一个飞行员测试难度序列,他设定了一个难度差的最大值,在序列中他想找到一个最长的子串,任意两个难度差不会超过他设定的最大值。耍畸形一个人是不行的,于是他找到了你。

Input

输入:第一行两个有空格隔开的整数k(0<=k<=2000,000,000),n(1<=n<=3000,000),k代表Tz设定的最大值,n代表难度序列的长度。第二行为n个由空格隔开的整数ai(1<=ai<=2000,000,000),表示难度序列。

Output

输出:最大的字串长度。

Sample Input

3 9
5 1 3 5 8 6 6 9 10

Sample Output

4
(有两个子串的长度为4: 5, 8, 6, 6 和8, 6, 6, 9.最长子串的长度就是4)

HINT

 

Source

维护两个单调队列 max min 搞搞就好

 #include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define N 3000005
#define ll long long
using namespace std;
int n,m,a[N],mx[N],mn[N];
int l[]={,},r[]={,}; char gc(){
static char s[],*p1,*p2;
if(p1==p2)p2=(p1=s)+fread(s,,,stdin);
if(p1==p2)return EOF;
return *p1++;
}
int read(){
int x=;char ch=gc();
while(ch>''||ch<'')ch=gc();
while(ch>=''&&ch<='')x=x*+ch-'',ch=gc();
return x;
}
int main(){
m=read();n=read();
for(register int i=;i<=n;i++)a[i]=read();
mx[++r[]]=;mn[++r[]]=;
register int h=,t=,ans=;
while(t<n){
t++;
while(l[]<=r[]&&a[mx[r[]]]<=a[t])r[]--;
while(l[]<=r[]&&a[mn[r[]]]>=a[t])r[]--;
mx[++r[]]=t;mn[++r[]]=t;
int tmp=a[mx[l[]]]-a[mn[l[]]];
while(tmp>m){
h++;
while(mx[l[]]<h)l[]++;
while(mn[l[]]<h)l[]++;
tmp=a[mx[l[]]]-a[mn[l[]]];
}
if(t-h+>ans)ans=t-h+;
}
printf("%d\n",ans);
return ;
}

最新文章

  1. sphinx 增量索引 实现近实时更新
  2. 夺命雷公狗---linux之centos的安装
  3. PCB的技巧
  4. 在Linux下如何创建LVM及LVM创建过程
  5. Codeforces Round #312 (Div. 2)
  6. bundles.Add( )下无法绑定后缀为min.css的文件
  7. 查找链表中是否有环linked-list-cycle
  8. FFmpeg 结构体学习(二): AVStream 分析
  9. laravel 远程一对多实例
  10. Oracle 外键级联更新
  11. Android广播机制的基本使用
  12. node.js(一)
  13. AtCoder Grand Contest 11~17 做题小记
  14. python进程间通信--信号Signal
  15. (1.11)SQL优化——mysql提示(hint)
  16. day27 网络通信协议 tcp/udp区别
  17. Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录
  18. 最简单,有效的学习mysql教程(一)
  19. 离线微博工具Open Live Writer(Windows Live Writer)安装过程及server error 500错误解决
  20. 获得Azure订阅LoadBalancer的脚本

热门文章

  1. 【iOS】swift 保持代码优美的10个方法
  2. Linux 磁盘和文件管理系统 文件打包解压备份 VIM、VI编辑器
  3. JAVA_SE基础——31.this关键字
  4. selenium在页面中多个fream的定位
  5. 证明二叉查找树所有节点的平均深度为O(logN)
  6. UIView圆角设置
  7. Git撤销commit消息保留修改
  8. C语言的一些输出格式
  9. python列表很聪明,支持负数索引
  10. 关于字数太多直接变成省略号的方法css