新学二分查找,如果错得比较离谱勿喷,我的思路是已知C,将A看作B + C,B在1到n的循坏中枚举,接着用二分找A(不求AC代码,求改,谢谢
# include<bits/stdc++.h>
using namespace std;
const int kk = 200005;
int a[kk], ans;
int find(long long x){
long long l = 1, r = pow(2, 30);
while(l < r){
long long mid = l + (r - l) / 2;
if(a[mid] > x) r = mid;
else l = mid + 1;
}
if(a[l] == x) return 1;
else return 0;
}
int main(){
int n, c;
cin >> n >> c;
for(int i = 1; i <= n; i++)
cin >> a[i];
for(int i = 1; i <= n; i++){
long long t = c + a[i];
ans += find(t);
}
cout << ans;
return 0;
}