A-B 数对
2024年12月25日小于 1 分钟
简单哈希做法
#include <bits/stdc++.h>
using namespace std;
const int MOD = 333333;
vector<pair<int, int>> hsh[MOD];
void add(int x)
{
int xx = x % MOD;
for (int i = 0; i < hsh[xx].size(); i++)
if (hsh[xx][i].first == x)
{
hsh[xx][i].second++;
return;
}
hsh[xx].push_back(make_pair(x, 1));
}
int get(int x)
{
int xx = x % MOD;
for (int i = 0; i < hsh[xx].size(); i++)
if (hsh[xx][i].first == x)
return hsh[xx][i].second;
return 0;
}
int n, c;
int a[200000 + 5];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> c;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
add(a[i]);
}
long long ans = 0;
for (int i = 1; i <= n; i++)
ans += get(a[i] + c);
cout << ans;
return 0;
}