比赛 20111108 评测结果 AAAAAAAAAA
题目名称 数对的个数 最终得分 100
用户昵称 Pom 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-11-08 08:53:53
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>

using namespace std;

const int MAXN=200002;

int a[MAXN],n,K,l,r,i,j,k,p1,p2,ans=0;

int main()
{
	freopen("dec.in","r",stdin);
	freopen("dec.out","w",stdout);
	scanf("%d%d",&n,&K);
	for (i=1;i<=n;i++) scanf("%d",a+i);
	sort(a+1,a+n+1);
	j=1;
	i=2;
	while (i<=n)
	{
		if (a[i]-a[j]==K)
		{
			p1=p2=1;
			while (i+1<=n && a[i]==a[i+1])
			{
				++p1;
				++i;
			}
			while (j+1<=n && a[j]==a[j+1])
			{
				++p2;
				++j;
			}
			ans+=p1*p2;
			++i;
		}
		else 
			if (a[i]-a[j]<K) ++i;
			else ++j;
	}
	printf("%d\n",ans);
	return 0;
}