map。
注意要当c=0时要去重。
#include"cstdio" #include"map" #include"cctype" using namespace std; long long read() { long long c,x=0,s=1; while(!isdigit(c=getchar())) if(c==‘-‘) s=-1; while(x=x*10+c-‘0‘,isdigit(c=getchar())); return x*s; } long long a[200001]; map<long long,long long> m; int main() { long long n=read(),c=read(),ans=0; for(long long i=1; i<=n; i++) { a[i]=read(); m[a[i]]++; } for(long long i=1; i<=n; i++) ans+=m[a[i]-c]; if(!c) for(map<long long,long long>::iterator i=m.begin(); i!=m.end(); i++) ans-=i->second; printf("%lld",ans); return 0; }