P1102 数对

题目描述

在这里插入图片描述

思路

对每一个元素遍历,用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;
}

猜你喜欢

转载自blog.csdn.net/m0_45210226/article/details/108277312