a-b=k

#include <bits/stdc++.h>
using namespace std;
int n,k,j,i;
int a[200001];
int f(int r,int l){
    int mid=l+(r-l)/2;
    if(r<l){
        return -1;
    }
    if(a[i]-a[mid]==k){
        if(f(r,mid+1)!=-1){
            return f(r,mid+1);
        }else{
            return mid;
        }
    }else if(a[i]-a[mid]>k){
        return f(r,mid+1);
        
    }else{
        return f(mid-1,l);
    }
}
int d(int r,int l){
    int mid=l+(r-l)/2;
    if(r<l){
        return -1;
    }
    if(a[i]-a[mid]==k){
        if(d(mid-1,l)!=-1){
            return d(mid-1,l);
        }else{
            return mid;
        }
    }else if(a[i]-a[mid]>k){
        return d(r,mid+1);
        
    }else{
        return d(mid-1,l);
    }
}
int main(){
    cin>>n>>k;
    j=0;
    for(i=0;i<n;i++){
        cin>>a[i];
    }
    sort(a,a+n);
    for(i=n-1;i>0;i--){
        if(f(i,0)!=-1 && d(i,0)!=-1){
            j+=(f(i,0)-d(i,0)+1);
        }else if(f(i,0)!=-1 || d(i,0)!=-1){
            j+=1;
        }
    }
    cout<<j;
    return 0;
}

 

posted @ 2024-11-29 19:23  -刘-j-x-  阅读(8)  评论(0)    收藏  举报