rt
我想用尺取法做,但是只通过了样例。
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int n,z;
int a[200005];
bool b[200005];
long long ans=0;
int main()
{
cin>>n>>z;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);
int i,j;
for(i=1;i<=n;i++)
{
while(b[i]==1) i++;
j=i;
while(abs(a[j]-a[i])<=z&&j<=n&&b[j]==0&&b[i]==0)
j++;
if(b[i]==0&&b[j]==0&&i<=n&&j<=n)
{
ans++;
b[i]=1;
b[j]=1;
cout<<i<<' '<<j<<endl;
}
}
cout<<ans<<endl;
return 0;
}