tle两个点~求大佬讲解
查看原帖
tle两个点~求大佬讲解
75821
王鸿翼楼主2021/10/9 23:26
#include<bits/stdc++.h>
using namespace std;
int n,c,tot=0;
int a[200010];
void findd(int l,int r,int k){
    if(l>=r)    return;
    int mid=(l+r)/2;
    if(a[k]+c==a[mid]){
        tot++;

    }
    if(a[k]+c>=a[mid])  findd(mid+1,r,k);
    if(a[k]+c<=a[mid])  findd(l,mid,k);
}
inline int read()
{
    int x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9')
    {
        if(ch=='-')
            f=-1;
        ch=getchar();
    }
    while(ch>='0' && ch<='9')
        x=x*10+ch-'0',ch=getchar();
    return x*f;
}
int main(){
    n=read();c=read();
    for(int i=1;i<=n;i++)   a[i]=read();
    sort(a+1,a+n+1);
    for(int i=1;i<=n;i++){
            int l=i,r=n+1;
        findd(l,r,i);
    }
    printf("%d",tot);
    return 0;
}
2021/10/9 23:26
加载中...