果然还是太菜了。。
第二第三个点没过
#include<bits/stdc++.h>
using namespace std;
long long n,c,a[2000001],ans;
long long er(long long l,long long r,long long x){
while(l<r){
long long mid=(r+l)/2;
if(x<=a[mid]) r=mid;
if(x>a[mid]) l=mid+1;
}
return l;
}
int main(){
cin>>n>>c;
for(int i=1;i<=n;++i) scanf("%lld",&a[i]);
sort(a+1,a+n+1);
for(int i=2;i<=n;++i){
if(a[i]<c) continue;
long long b=a[i]-c;
int q=er(1,i,b);
if(a[q]==b){
ans++;
while(a[q]==a[q+1]) ans++,q++;
}
}
cout<<ans;
return 0;
}