题目描述
思路
对每一个元素遍历,用upper_bound() - lower_bound() 求出所求元素的数对的个数,之后相加。
代码
#include<bits/stdc++.h>
using namespace std;
int n,c,a[200005];
long long ans = 0;
int main(){
//freopen("a.txt","r",stdin);
cin>>n>>c;
for(int i = 1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
for(int i = 1;i<= n;i++){
int flag = upper_bound(a+i,a+n+1,a[i]+c)-lower_bound(a+i,a+n+1,a[i]+c);
ans+= flag;
}
cout<<ans<<endl;
return 0;
}