Cho mảng a[] gồm n phần tử và số k.Đếm tất cả các cặp phần tử có hiệu bằng k.
Ý tưởng của em là sắp xếp lại mảng rồi sử dụng tìm kiếm nhị phân để tìm a[i] + k có trong mảng không.
dưới là code của em ạ.Không hiểu sai ở đâu mà cứ không ra được.Anh chị giúp em với ạ
#include<algorithm>
using namespace std;
int searching(int a[] , int low , int high, int x ) {
if (high>=low) {
int mid=(high+low)/2;
if (x==a[mid]) return mid;
if (x > a[mid]) return searching(a, (mid+1) , high, x );
else return searching(a, low , (mid-1), x );
}
return -1;
}
int main() {
int t;
while(t--) {
int n,*a,k;
cin>>n>>k;
a=new int [n+1];
for(int i=0;i<n;i++) {
cin>>a[i];
}
sort(a,a+n);
int count=0;
for(int i=0;i<n;i++) {
if (searching(a,i+1,n-1,a[i]+k)!=-1) count++;
}
cout<<count;
}
}