本人只学习了C语言和部分STL的知识,代码如下:
#include<cstdio>
#include<algorithm>
#include<cmath>
int num[200001],cnt=0;
void search(int* p,int n,int q)
{
int res=0,left=0,right=n-1,mid;
while(left<=right)
{
mid=left+(right-left)/2;
if(p[mid]>=q)
{
res=mid;
right=mid-1;
}
else if(p[mid]<q)
left=mid+1;
}
while(p[res]==q)
{
res++;
cnt++;
}
return;
}
int main()
{
int t,N,C;
scanf("%d%d",&N,&C);
for(int i=0;i<N;i++)
{
scanf("%d",&num[i]);
}
for(int i=0;i<N-1;i++)
{
for(int j=0;j<N-i-1;j++)
{
if(num[j]>=num[j+1])
{
t=num[j];
num[j]=num[j+1];
num[j+1]=t;
}
}
}
for(int i=0;i<N;i++)
{
search(num,N,num[i]+C);
}
printf("%d",cnt);
return 0;
}