洛谷 P1102. A-B 数对
原题链接
中等
作者:
我是java同学
,
2024-01-09 20:22:57
,
所有人可见
,
阅读 38
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 200010;
int n, m;
int q[N];
int main() {
scanf("%d%d", &n, &m);
unordered_map<int, int> hash;
for (int i = 0; i < n; i ++ ) {
scanf("%d", &q[i]);
hash[q[i]] ++ ;
}
sort(q, q + n);
LL res = 0;
for (int i = 0; i < n; i ++ ) {
int l = 0, r = n - 1;
while (l < r) {
int mid = l + r + 1 >> 1;
if (q[i] - q[mid] >= m) l = mid;
else r = mid - 1;
}
if (q[i] - q[r] == m)
res += hash[q[r]];
}
cout << res << endl;
return 0;
}
我用hash表做的hh
都可以,只要能ac