这版n ^ 2的代码过了,n = 2e5, c = 2时,数据为2e5 - 1个2和一个4,这样会卡到n ^ 2
#include<bits/stdc++.h>
using namespace std;
int main()
{int n,c;
int a[200005];
scanf("%d%d",&n,&c);
for(int i = 1; i <= n; ++i)
scanf("%d",&a[i]);
sort(a+1,a+1+n);
long long ans = 0;
int l = 1,r = 1;
for(int i = 1; i <= n; ++i){
while(l<=n&&a[l]-a[i]<c)
++l;
while(r<=n&&a[r]-a[i]<=c)
++r;
if(a[l]-a[i]==c&&a[r-1]-a[i]==c)
ans += r-l;
}
printf("%lld",ans);
return 0;
}