#2,#4,#8,#9求助
  • 板块P1102 A-B 数对
  • 楼主Jason101
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/19 20:32
  • 上次更新2024/10/19 22:09:09
查看原帖
#2,#4,#8,#9求助
1028310
Jason101楼主2024/10/19 20:32
#include <bits/stdc++.h>
using namespace std;
int a[200005];
int main()
{
	int N,C;
	long long num=0;
	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 l=1,r=N;
		while(l<r)
		{
			int mid=(l+r)/2;
			if(a[mid]>=a[i]+C)
			r=mid;
			else
			l=mid+1;
		}
		if(a[l]!=a[i]+C) break;
		int l1=1,r1=N;
		while(l1<r1)
		{
			int mid2=(l1+r1+1)/2;
			if(a[mid2]<=a[i]+C)
			l1=mid2;
			else
			r1=mid2-1;
		}
		if(a[l1]==a[i]+C) l1++;
		num+=l1-l;
	}
	cout<<num;
	return 0;
}
2024/10/19 20:32
加载中...