求调,一关
查看原帖
求调,一关
511520
drmr楼主2023/7/7 20:33

WAWA , 40pts40pts

#include <bits/stdc++.h>
using namespace std;
int n, k, a[5000000];
int maxq[5000000], maxl, maxr;
int minq[5000000], minl, minr;
int rr;
int l, r;int cnt;
void add(int x){
	rr = maxr;
	while(maxq[rr] < x){
		maxq[rr] = x;
		rr--;
	}
	maxq[++maxr] = x;
	rr = minr;
	while(minq[rr] > x){
		minq[rr] = x;
		rr--;
	}
	minq[++minr] = x;
}
int main(){
	maxl = maxr = 1;
	maxq[1] = -1e9;
	minl = minr = 1;
	minq[1] = 1e9;
	cin >> k >> n;
	for(int i = 1; i <= n; i++){
		cin >> a[i];
	}
	l = 1;
	r = 0;
    while(l <= n){
    	while(r <= n){
    		r++;
     		if(max(maxq[maxl], a[r]) - min(minq[minl], a[r]) > k){
    			break;
			}
    		else add(a[r]);
		}
		if(maxl == 1) maxl++, minl++;
		r--;
//		cout << l << "," << r << endl;
		if(r > n) break;
		cnt = max(cnt, r - l + 1);
		minl++;
		maxl++;
   	 	l++;
	}
	cout << cnt << endl;
	return 0;
}
2023/7/7 20:33
加载中...