30pts 求调
查看原帖
30pts 求调
1032391
封禁用户楼主2025/7/29 09:06

双指针awa

#include<bits/stdc++.h>
//#define int long long
#define I_love_Foccarus return
#define cin_fast ios::sync_with_stdio(false) , cin.tie(0) , cout.tie(0)
#define endl '\n'
//#define getchar getc
#define pii pair<int,int>
#define mk(a,b) make_pair(a,b)
#define fi first
#define se second
#define pd(a) push_back(a)
#define in(a) a = read_int()
using namespace std;
const int Size = 1 << 14;
const int N = 5e4 + 5;
const int inf = 0x3f3f3f3f;
const long long INF = 0x3f3f3f3f3f3f3f3f; 
inline char getc(){
	static char syn[Size] , *begin = syn , *end = syn;
	if(begin == end) begin = syn , end = syn + fread(syn , 1 , Size , stdin);
	I_love_Foccarus *begin ++;
}
inline int read_int() {
	int x = 0;
	char ch = getchar();
	bool f = 0;
	while('9' < ch || ch < '0') f |= ch == '-' , ch = getchar();
	while('0' <= ch && ch <= '9') x = (x << 3) + (x << 1) + ch - '0' , ch = getchar();
	I_love_Foccarus f ? -x : x;
}
int a[N] , b[N] , c[N];
signed main() {
	//cin_fast;
	int n , k;
	in(n) , in(k);
	for(int i = 1 ; i <= n ; i ++) in(a[i]);
	sort(a + 1 , a + n + 1);
	int l = 1 , r = 1 , ans = 0;
	while(r <= n) {
        while(a[r] - a[l] > k) l ++;
        b[r] = l;
		c[r] = max(r - l + 1 , c[l - 1]);
		ans = max(ans , c[l - 1] + r - l + 1);
		r ++;
	}
	cout<<ans;
	I_love_Foccarus 0;
}
2025/7/29 09:06
加载中...