这不是二分吗,为啥要用map
2025-04-14 13:01:07
发布于:广东
17阅读
0回复
0点赞
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, c, a[200010], ans;
signed main(){
	cin >> n >> c;
	for (int i=1;i<=n;i++){
		scanf("%lld", &a[i]); 
	}
    sort(a+1, a+n+1);
    
    // 循环b
	for (int i=1;i<=n;i++){
        // 求a有多少个
        int x = a[i]+c;
        int upper = upper_bound(a+1, a+n+1, x)-a;
        int lower = lower_bound(a+1, a+n+1, x)-a;
        int sum = upper-lower;
        if (upper>=i && lower<=i) sum--;
        if (sum>0) ans += sum;
	}	
	
	printf("%lld", ans);
	
	return 0;
}
这里空空如也


有帮助,赞一个