#include<bits/stdc++.h>
using namespace std;
int n, c, a[2000005], ans=0;
int find1(int lpos, int rpos, int x){
int lt=lpos-1, rt=rpos+1;
while(lt+1 != rt){
int mid=(lt+rt)/2;
if(a[mid] < x)
lt=mid;
else if(a[mid]==x){
rt=mid;
}
else
rt=mid;
}
if(a[rt]==x)
return rt;
else
return -1;
}
int find2(int lpos, int rpos, int x){
int lt=lpos-1, rt=rpos+1;
while(lt+1 != rt){
int mid=(lt+rt)/2;
if(a[mid] < x)
lt=mid;
else if(a[mid]==x){
lt=mid;
}
else
rt=mid;
}
if(a[lt]==x)
return lt;
else
return -1;
}
int main()
{
cin>>n>>c;
for(int i=1; i<=n; i++)
cin>>a[i];
sort(a+1, a+n+1);
for(int i=1; i<=n; i++){
int b=a[i]-c;
int zuo=find1(1, n, b);
int you=find2(1, n, b);
if(zuo != -1){
ans += you-zuo+1;
}
}
cout<<ans;
return 0;
}
好奇怪,样例过了,WA了个点,求大佬帮忙!!!QAQ