93 分求助
查看原帖
93 分求助
945742
hexuchen楼主2024/11/10 15:35
#include <bits/stdc++.h>
using namespace std;
int limit,nums[3000010],n;
int main(){
	ios::sync_with_stdio(0);
	cin>>limit>>n;
	for(int i=1;i<=n;i++){
		cin>>nums[i];
	}
	if(limit<0){
		cout<<0;
		return 0;
	}
	deque<int> min_q,max_q;
	int l=0,ans=1;
	min_q.push_back(0);
	max_q.push_back(0);
	for(int r=1;r<n;r++){
		while(!min_q.empty() && nums[r]<nums[min_q.back()]){
			min_q.pop_back();
			
		}
		while(!max_q.empty() && nums[r]>nums[max_q.back()]){
			max_q.pop_back();
		}
		min_q.push_back(r);
		max_q.push_back(r);
		while((nums[max_q.front()]-nums[min_q.front()])>limit){
			if(min_q.front()==l){
				min_q.pop_front();
			}
			if(max_q.front()==l){
				max_q.pop_front();
			}
			l++;
		}
		ans=max(ans,r-l+1);
	}
	cout<<ans;
	return 0;
}
2024/11/10 15:35
加载中...