这不是二分吗,为啥要用map
2025-04-14 13:01:07
发布于:广东
2阅读
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;
}
这里空空如也
有帮助,赞一个