首先,A-B=C可以转化为A-C=B
所以,我们可以用map来做这道题
用一个map数组来映射每次出现的a数组的元素,再把a数组减去C,之后查找a数组对应的map数组,累加所有每组对应的B的个数
代码
#include<bits/stdc++.h>
using namespace std;
int long long a[200001];
map<long long,long long>m;
int main()
{
int n;
long long c;
long long ans=0;
cin>>n>>c;
for(int i=1;i<=n;i++)
{
cin>>a[i];
m[a[i]]++;
a[i]-=c;
}
for(int i=1;i<=n;i++)
{
ans+=m[a[i]];
}
cout<<ans;
return 0;
}