给你一个在数轴上的点集 \(x_1, x_2, \dots, x_n\)。 每两个点 \(i\),\(j\) 可以在满足以下情况的时候相连: 点 \(i\) 和点 \(j\) 均未与其他点相连;\(\left| x_i - x_j \right| \geq z\)。那么请你求出最多可以连接多少点对?
Solution
双指针一遍即可
不知道这个题怎么评的分
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 200005;
int n,z,x[N],u[N];
signed main() {
ios::sync_with_stdio(false);
cin>>n>>z;
for(int i=1;i<=n;i++) cin>>x[i];
sort(x+1,x+n+1);
int j=1;
for(int i=1;i<=n;i++) if(x[i]-z>=x[j]) ++j;
cout<<min(j-1,n/2);
}