记录编号 235583 评测结果 AAAAAAAAAAA
题目名称 数对的个数 最终得分 100
用户昵称 Gravatarliu_runda 是否通过 通过
代码语言 C++ 运行时间 0.075 s
提交时间 2016-03-11 09:45:49 内存使用 1.05 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
using namespace std;
int read(){
	bool minus=false;int x;char ch;
	while(ch=getchar(),(ch<'0'||ch>'9')&&ch!='-');
	if(ch=='-'){
		minus=true;
		ch=getchar();
	}
	x=ch-48;
	while(ch=getchar(),ch<='9'&&ch>='0')x=x*10+ch-48;
	return minus?-x:x;
}
int num[200005];
int n,c;
int findr(int x){
	int l=0,r=n-1,mid;
	while(l<=r){
		mid=(l+r)>>1;
		if(num[mid]<=x)l=mid+1;
		else r=mid-1;
	}
	return l;
}
int findl(int x){
	int l=0,r=n-1,mid;
	while(l<=r){
		mid=(l+r)>>1;
		if(num[mid]>=x)r=mid-1;
		else l=mid+1;
	}
	return r+1;
}
int count(int x){
//	printf("findr(%d)==%d,findl(%d)==%d\n",x,findr(x),x,findl(x));
	return findr(x)-findl(x);
}
int main(){
	freopen("dec.in","r",stdin);
	freopen("dec.out","w",stdout);
	n=read();c=read();
	for(int i=0;i<n;++i)num[i]=read();
	sort(num,num+n);
	int ans=0;
	for(int i=0;i<n;++i){
//		printf("count(%d)==%d\n",num[i]+c,count(num[i]+c));
		ans+=count(num[i]+c);
	}
	printf("%d",ans);
	fclose(stdin);fclose(stdout);
	return 0;
}