求调,83分
查看原帖
求调,83分
926385
zeng_yanqin楼主2024/11/23 18:01

**

#include <bits/stdc++.h>
using namespace std;
const int maxn=90000000;
int n,m,a[maxn];
int get(int x){
	int l=0,r=n+1;
	while(l+1<r){
		int mid=(l+r)/2;
		if(a[mid]==x)r=mid;
		else if(a[mid]>x)r=mid;
		else l=mid;
	}
	return r;
}
int get1(int x){
	int l=0,r=n+1;
	while(l+1<r){
		int mid=(l+r)/2;
		if(mid==x)l=mid;
		else if(a[mid]>x)r=mid;
		else l=mid;
	}
	return l;
}
int main() {
    cin>>n>>m;
    for(int i=1;i<=n;i++)cin>>a[i];
    sort(a+1,a+n+1);
    a[0]=-2e9,a[n+1]=2e9;
	long long ans=0;
    for(int i=1;i<=n;i++){
    	int x=a[i]+m;
    	int y=get(x);
    	if(a[y]!=x)continue;
    	int z=get1(x);
    	ans+=z-y+1;
	}
	cout<<ans<<endl;
    return 0;
}

**

2024/11/23 18:01
加载中...