莫名其妙AC的代码,求解释
查看原帖
莫名其妙AC的代码,求解释
885505
Joushi_Ikita楼主2023/4/25 13:09
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,c,a[200003];
long long o=0;
int main(){
	cin>>n>>c;
	for(int i=1;i<=n;i++)scanf("%d",&a[i]);
	sort(a+1,a+n+1);
	for(int i=1;i<=n-1;i++){
		int l1=i+1,r1=n,mid,l2=i+1,r2=n,k=a[i]+c;
		while(l1<r1){
			mid=(l1+r1)/2;
			if(mid==l1)mid++;
			if(a[mid]>=k)r1=mid-1;
			else l1=mid;
		}
		while(l2<r2){
			mid=(l2+r2)/2;
			if(mid==l2)mid++;
			if(a[mid]>k)r2=mid-1;
			else l2=mid;
		}
		int x=l1+1,y=l2-1;
		bool f=0;
		while (a[x]==k){
			x--;
			f=1;
		}
		while (a[x]==k){
			y++;
			f=1;
		}
		if(f)o+=y-x+1;
	}
	cout<<o;
	return 0;
}
2023/4/25 13:09
加载中...