70pts求助!
查看原帖
70pts求助!
1183187
sxhy楼主2024/4/14 20:13
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 7;
const int M = 1e5 + 7;
#define up(i,l,r) for(int i=l;i<=r;i++)
#define dn(i,l,r) for(int i=l;i>=r;i--)
long long n, m, g[N], ans, k, ans2,new_g[N],tot;
int main() {
	cin >> n >> k;
	up(i, 1, n) {
		cin >> g[i];
	}
	sort(g + 1, g + 1 + n);
	int l1, r1, l2, r2;
	for (long long i = 1, j = 0; i <= n; i++) {
		while (j + 1 <= n && g[j + 1] - g[i] <= k) {
			j++;
		}
		if (g[j] - g[i] <= k)
		{
			if (ans < j - i + 1) {
				ans = j - i + 1;
				l1 = i, r1 = j;
			}

		}
	}
	up(i,1,n) {
		if (i >= l1 && i <= r1)continue;
		new_g[++tot] = g[i];
	}
	for (long long i = 1, j = 0; i <= tot; i++) {
		while (j + 1 <= tot && new_g[j + 1] - new_g[i] <= k) {
			j++;
		}
		if (new_g[j] - new_g[i] <= k)
		{
			if (ans2 < j - i + 1) {
				ans2 = j - i + 1;
			}

		}
	}
	cout << ans + ans2;


}
2024/4/14 20:13
加载中...