纯二分超时
查看原帖
纯二分超时
1482588
magnificent2024楼主2024/11/20 20:30

测试点2,3超时
难道这题纯二分过不了吗
还是我太菜了。。。

#include<bits/stdc++.h>
using namespace std;
int n,k,a[200001],ans;
void find(int tag,int l,int r)
{
	int low=l;
    int high=r;
	
    if(low>high)return;
    int mid=(low+high)/2;
    if( a[mid]-a[tag] == k )
    {
    	ans++;
    	find(tag,mid+1,high);
    	find(tag,low,mid-1);
	}
	else if( a[mid]-a[tag] < k )
	{
		find(tag,mid+1,high);
	}
	else
	{
		find(tag,low,mid-1);
	}
}
int main(void)
{
    cin>>n>>k;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    sort(a+1,a+1+n);
    for(int i=1;i<=n;i++)
    {
    	find(i,i+1,n);
	}
	cout<<ans;
    return 0;
}


2024/11/20 20:30
加载中...