map 映照容器在头文件<map>中定义,它的元素数据是由一个键值和一个映照数据组成的,键值和映照数据具有一一对应的关系,键值可以是数,也可以是字符。对于这一道题,我们可以把 A-B=C 改成 B+C=A,再通过 map 进行映照,就可以得出答案。
#include<iostream>
#include<map>
using namespace std;
#include<iostream>
using namespace std;
inline int read()
{
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-')
f=-1;
c=getchar();
}
while(c>='0'&&c<='9')
{
x=(x<<3)+(x<<1)+(c^48);
c=getchar();
}
return x*f;
}
int main()
{
long long n,c,sum=0;
n=read(),c=read();
int a[200010];
map<int,int> b;
for(int i=1; i<=n; i++)
{
cin>>a[i];
b[a[i]]++;
}
for(int i=1; i<=n; i++)
sum+=b[a[i]+c];
cout<<sum<<endl;
return 0;
}