比赛 |
20111108 |
评测结果 |
AAAAAAAAAT |
题目名称 |
数对的个数 |
最终得分 |
90 |
用户昵称 |
magic |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2011-11-08 10:22:41 |
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
const int maxlong=100000000;
int data[200005],ans,n,c;
void qsort(int a[],int l,int r);
void qsort(int a[],int l,int r)
{
int i,j,x,y;
i=l;j=r;x=a[(l+r)/2];
while (i<=j)
{
while (a[i]<x) i++;
while (a[j]>x) j--;
if (i<=j)
{
y=a[i];a[i]=a[j];a[j]=y;
i++;j--;
}
}
if (l<j) qsort(a,l,j);
if (i<r) qsort(a,i,r);
}
int main()
{
freopen("dec.in","r",stdin);
freopen("dec.out","w",stdout);
scanf("%d%d",&n,&c);
for (int i=1;i<=n;i++)
{
scanf("%d",&data[i]);
}
qsort(data,1,n);
int le,ri,mid;
data[n+1]=maxlong;
for (int i=1;i<=n;i++)
{
le=i+1;
ri=n;
while (le<ri)
{
mid=(le+ri)/2;
if (data[mid]-data[i]>=c)
{
ri=mid;
}
else
{
le=mid+1;
}
}
for (int j=le;j<=n;j++)
{
if (data[j]-data[i]==c)
{
ans++;
}
else
{
break;
}
}
}
if (c==0) ans*=2;
printf("%d",ans);
return 0;
}