蒟蒻求助
查看原帖
蒟蒻求助
638371
152chenzihao楼主2022/7/22 09:55
#include<bits/stdc++.h>
using namespace std;

int n[200005],a,b,c,nn,num=0;

void cinn(){
	cin>>nn>>c;
	for(int i=1;i<=nn;i++){
		cin>>n[i];
	}
	sort(n+1,n+nn+1);
}

int FindFront(int m){
	int lo=1,hi=nn,mi,ans=-1;
    while(lo<=hi){
        mi=(lo+hi)/2;
        if(n[mi]>=m){
            if(m==n[mi]){
                ans=mi;
            }
            hi=mi-1;
        }else{
            lo=mi+1;
        }
    }
    return ans;
}

int FindAfter(int m){
	int lo=1,hi=nn,mi,ans=-1;
    while(lo<=hi){
        mi=(lo+hi)/2;
        if(n[mi]<=m){
            if(m==n[mi]){
                ans=mi;
            }
            lo=mi+1;
        }else{
            hi=mi-1;
        }
    }
    return ans;
}

void NumBer(){
	for(int i=1;i<=nn;i++){
		b=n[i];
		a=b+c;
		if(FindFront(a)==-1){
			continue;
		}
		num+=abs(FindFront(a)-FindAfter(a))+1;
//		cout<<FindFront(a)<<" "<<FindAfter(a)<<" "<<num<<endl;
	}
	cout<<num;
}

int main(){
	cinn();
	NumBer();
}
2022/7/22 09:55
加载中...