二分,但是16分=(
  • 板块P1102 A-B 数对
  • 楼主BNCDBD
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/22 14:06
  • 上次更新2024/7/22 14:58:56
查看原帖
二分,但是16分=(
1357674
BNCDBD楼主2024/7/22 14:06
#include<bits/stdc++.h>
using namespace std;
int a[200003];
int binarySearch(int a[],int n,int target){
	bool f[200003]={0};
	int sum=0;
	if(target>a[n-1])return 0;
	int left=0,right=n-1,mid;
	while(1){
		bool flag=true;
		while(left<=right){
			mid=left+(right-left)/2;
			if(a[mid]==target&&f[mid]==false){
				sum++;
				f[mid]=true;
				flag=false;
				break;
			}else if(a[mid]>target){
				right=mid-1;
			}else{
				left=mid+1;
			}
		}
		if(flag){
			break;
		}
	}
	return sum;
}
int main(){
	int n,c,sum=0;
	cin>>n>>c;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	sort(a,a+n);
	for(int i=0;i<n;i++){
		int num=a[i]+c;
		sum+=binarySearch(a,n,num);
	}
	cout<<sum;
	return 0;
}
2024/7/22 14:06
加载中...