求助大佬,全都tle了,
查看原帖
求助大佬,全都tle了,
823847
xuanbrother楼主2024/3/17 12:47
#include <iostream>
#include <algorithm>
#include<cmath>

using namespace std;

const int N=200010;
int a[N],n,c;
long long cnt;

void find(int x)
{
    int l=0, r=n-1;
    int mid;
    
    while(l<r)
    {
        mid=l+r>>1;
        if(a[mid]<=x) l=mid;
        else r=mid-1;
    }
    
    int m=l;
    
    l=0,r=n-1;
    
    while(l<r)
    {
        mid=l+r+1>>1;
        if(a[mid]>=x) r=mid;
        else l=mid+1;
    }
    
    int n=l;
    if(a[m]==a[n]) cnt+=abs(n-m)+1;
}

int main()
{
    cin >> n >> c;
    for(int i=0; i<n; i++)
        cin >> a[i];
        
    sort(a, a+n);
    
    for(int i=0; i<n; i++)
        find(a[i]+c);
        
    printf("%lld", cnt);
    
    return 0;
}
2024/3/17 12:47
加载中...