求助一个也过不去
查看原帖
求助一个也过不去
1561041
littlebird2011楼主2025/2/4 21:20

我的大致思路是这样的: 先把他们接收然后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;
}
2025/2/4 21:20
加载中...