二分tle了,玄关
  • 板块P1102 A-B 数对
  • 楼主Johnson31
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/12/24 21:06
  • 上次更新2024/12/25 13:26:44
查看原帖
二分tle了,玄关
1329354
Johnson31楼主2024/12/24 21:06
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,c,m[2000010],cnt;
ll bs1(ll x){
	ll l=1,r=n,mid;
	while(l<n){
		mid=l+(r-l)/2;
		if(m[mid]<=x)l=mid;
		else r=mid;
	}
	return l;
}
ll bs2(ll x){
	ll l=1,r=n,mid;
	while(l<n){
		mid=l+(r-l)/2;
		if(m[mid]<x)l=mid;
		else r=mid;
	}
	return l;
}
int main(){
	cin>>n>>c;
	for(ll i=1;i<=n;i++){
		cin>>m[i];
	}
	sort(m+1,m+n+1);
	for(ll i=1;i<=n;i++){
		cnt+=bs1(m[i]+c)-bs2(m[i]+c); 
	}
	cout<<cnt;
	return 0;
}

2024/12/24 21:06
加载中...