标签:blog http ar io os sp for on div
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;
const int maxn = 100010;
int a[maxn];
int main()
{
int n,m,k;
while(~scanf("%d%d%d",&n,&m,&k)){
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
deque<int > mmax;
deque<int > mmin;
int ans = 0;
int st = 0;
for(int i=1;i<=n;i++){
while(!mmax.empty()&&a[i]>a[mmax.back()]) mmax.pop_back();//维护单调性
while(!mmin.empty()&&a[i]<a[mmin.back()]) mmin.pop_back();//维护单调性
mmax.push_back(i);
mmin.push_back(i);
while(!mmax.empty()&&!mmin.empty()&&a[mmax.front()]-a[mmin.front()]>k){
if(mmax.front()<mmin.front()){
st = mmax.front();
mmax.pop_front();
}
else {
st=mmin.front();
mmin.pop_front();
}
}
if(!mmax.empty()&&!mmin.empty()&&a[mmax.front()]-a[mmin.front()]>=m)
ans = max(ans,i-st);
}
cout<<ans<<endl;
}
return 0;
}HDU 3530 Subsequence (dp+单调队列)
标签:blog http ar io os sp for on div
原文地址:http://blog.csdn.net/bigbigship/article/details/41961959