求助,第三个点超时,其他全A
  • 板块P1102 A-B 数对
  • 楼主铛铛
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/8/13 09:20
  • 上次更新2023/11/3 04:09:41
查看原帖
求助,第三个点超时,其他全A
499824
铛铛楼主2023/8/13 09:20
#include <bits/stdc++.h>                                                                                                                                               
using namespace std;

int n,m,sum;
int a[2001000];

bool cpm(int x,int y){
	return x<y;
}

int cha(int v){
	int low=0,high=n-1;
	while(low<=high){
		int mid=low+((high-low)>>1);
		if(a[mid]>v) high=mid-1;	
		else if(a[mid]<v) low=mid+1;
		else return mid;	
	}
	return -1;
}

int main(){
	ios::sync_with_stdio(false);
	cin>>n>>m;
	for(int i=0;i<n;i++){                                                                        
		cin>>a[i];
	}
	sort(a,a+n,cpm);
	for(int i=0;i<n;i++){
		int y=cha(a[i]+m);
		if(y>-1){
			for(int i=y;i<n;i++) if(a[i]==a[y]) sum++;
									else break;
			for(int i=y-1;i>=0;i--) if(a[i]==a[y]) sum++;
									else break;
		}
	}
	cout<<sum;
	return 0;
}
2023/8/13 09:20
加载中...