#3 TLE help!
  • 板块P1102 A-B 数对
  • 楼主LZL_train
  • 当前回复15
  • 已保存回复15
  • 发布时间2020/5/23 11:54
  • 上次更新2023/11/7 01:58:56
查看原帖
#3 TLE help!
238326
LZL_train楼主2020/5/23 11:54
#include <iostream>
#include <math.h>
#include<algorithm>

using namespace std;
long long ab[2000000],c,n,sum=0;
bool rfn(int x,int&wz){
	//开始二分
	int le=0,ri=n-1,mid;
	while(le<=ri) {
		mid=(le+ri)/2;//计算中间数
		if(ab[mid]==x){
			wz=mid;
		    return true;//找到待查找的数
		}
		else if(ab[mid]<x)le=mid+1;
		else if(ab[mid]>x)ri=mid-1;
	}
	wz=-1;
	return false;
} 

int main(){
	cin>>n>>c;
	for(int i=0;i<n;i++){
		cin>> ab[i];
	}
	sort(ab,ab+n);
	for(long long aw=0;aw<n;aw++){
		int wz;
		if(rfn(ab[aw]+c,wz)){
			int suml=0,sumr=0;
			for( ;ab[wz-suml]==ab[wz]&&wz-suml>=0;suml++){
				;
			}
			for( ;ab[wz+sumr]==ab[wz]&&wz+sumr<n;sumr++){
				;
			}
			sum=sum+suml+sumr-1;
//			cout<<aw<<' ';
		}
	}
	cout<<sum;
}
2020/5/23 11:54
加载中...