P1102 A-B 数对


P1102 A-B 数对

#include
#include
#include
using namespace std;
map<int,int> m;
vector <int> ma;
long long ans=0;
int main()
{
	int N,C;
	cin>>N>>C;
	for (int i=0;iint k;
		cin>>k;
		if (m[k]==0)
		{
			ma.push_back(k);
		}
		m[k]++;
	}
	for (int i=0;ilong long)m[ma[i]]*m[ma[i]+C];
	}
	cout<endl;
	return 0;
}

方法二
//P2421 A-B数对(增强版)
#include
#include
using namespace std;
int a[100001];
int main()
{
	int n,c;
	cin>>n>>c;
	for (int i=0;icin>>a[i];
	}
	long long ans=0;
	for (int i=0;ilong long s1=lower_bound(a,a+n,a[i]+c)-a;
		long long s2=upper_bound(a,a+n,a[i]+c)-a;
		ans=ans+s2-s1;
	}
	cout<endl;
	
}