#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=3e5+10;
unordered_map<ll,ll>q;
ll n,k,a[N],res=0;
ll check(ll x)
{
ll l=1,r=n;
while(l<r)
{
ll mid=(l+r+1)>>1;
if((a[mid]-x)<=k)l=mid;
else r=mid-1;
}
if(a[l]-x!=k)return 0;
return a[l];
}
int main()
{
cin>>n>>k;
for(ll i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+n+1,greater<ll>());
for(ll i=1;i<=n;i++)
{
if(a[i]!=0)
q[a[i]]++;
else res+=q[k];
}
sort(a+1,a+n+1);
for(auto t:q)
{
ll a=t.first,b=t.second;
res=res+(q[check(a)]*b);
}
cout<<res;
}
这个为什么不行啊