思路就是累加每次找到的a-c成立的b个数,麻烦各位大佬帮忙看看
#include<bits/stdc++.h>
using namespace std;
unsigned long long n,m,c,a[200020];
unsigned long long part(unsigned long long start,unsigned long long end,unsigned long long int x){
unsigned long long mid=start+(end-start)/2;
if(end-start==1){
if(x==a[start]) end=start;
if(x==a[end]) start=end;
if(end==start){
while(a[end]==x) end++;
return end-start;
}
else return 0;
}
if(x<=a[mid]) part(start,mid,x);
else part(mid,end,x);
}
int main(){
cin >>n>>m;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
for(int i=0;i<n;i++){
c+=part(0,n,a[i]-m);
//cout<<c;
}
cout <<c;
}