92求助
查看原帖
92求助
731197
cuphead_P楼主2024/3/8 22:27
#include<bits/stdc++.h>
using namespace std;
int n, c, a[2000005], ans=0;
int find1(int lpos, int rpos, int x){
	int lt=lpos-1, rt=rpos+1;
	while(lt+1 != rt){
		int mid=(lt+rt)/2;
		if(a[mid] < x)
			lt=mid;
		else if(a[mid]==x){
			rt=mid;
		}
		else
			rt=mid;
	}
	if(a[rt]==x)
		return rt;
	else
		return -1;
}
int find2(int lpos, int rpos, int x){
	int lt=lpos-1, rt=rpos+1;
	while(lt+1 != rt){
		int mid=(lt+rt)/2;
		if(a[mid] < x)
			lt=mid;
		else if(a[mid]==x){
			lt=mid;
		}
		else
			rt=mid;
	}
	if(a[lt]==x)
		return lt;
	else
		return -1;
}
int main()
{
	cin>>n>>c;
	for(int i=1; i<=n; i++)
		cin>>a[i];
	sort(a+1, a+n+1);
	for(int i=1; i<=n; i++){
		int b=a[i]-c;
		int zuo=find1(1, n, b);
		int you=find2(1, n, b);
		if(zuo != -1){
			ans += you-zuo+1;
		}
	}
	cout<<ans;
	return 0;
} 

好奇怪,样例过了,WA了个点,求大佬帮忙!!!QAQ

2024/3/8 22:27
加载中...