76求助
查看原帖
76求助
1093925
denghaoqi6楼主2024/3/26 13:30
#include<bits/stdc++.h>
using namespace std;
long long n,c,a[2005];
struct node
{
	int num,cnt;
}b[200005];
int bn;
long long ans=0;
int find(int x)
{
	int l=1,r=bn,m;
	while(l<r)
	{
		m=(l+r)>>1;
		if(x<=b[m].num) r=m;
		else l=m+1;
	}
	if(b[l].num==x) return l;
	else return -1;
}
int main()
{
	cin>>n>>c;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	sort(a+1,a+n+1);
	bn=1;
	b[1].num=a[1];
	b[1].cnt=1;
	for(int i=2;i<=n;i++)
	{
		if(a[i]==b[bn].num) b[bn].cnt++;
		else
		{
			bn++;
			b[bn].num=a[i];
			b[bn].cnt=1;
		}
	}
	for(int i=1;i<=bn;i++)
	{
		int A=c+b[i].num;
		int x=find(A);
		if(x!=-1) ans+=(long long)b[i].cnt*b[x].cnt;
	}
	cout<<ans;
	return 0;
}
2024/3/26 13:30
加载中...