我的大致思路是这样的:
先把他们接收然后sort排序,接着for一个一个B走bool函数,二分查找A=B+C,如果找到A就sum++,最后输出sum的值,我不明白我的思路有什么问题
#include<bits/stdc++.h>
using namespace std;
long long a[200001],n,c;
bool check(int l){
long long x=a[l]+c,r=n,mid;
l++;
while(l<=r){
mid=(l+r)/2;
if(a[mid]==x){
return 1;
}
if(a[mid]>x){
r=mid;
}else{
l=mid+1;
}
}
return 0;
}
int main(){
long long sum=0;
cin>>n>>c;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
for(int i=1;i<=n;i++){
if(check(i)){
sum++;
}
}
cout<<sum;
return 0;
}