代码如下,二分
没有使用任何优化
#include<iostream>
using namespace std;
int m,t,n,i,l,r,mid,w,q,a[5000000];
int main(){
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
cin>>a[i];
}
for(i=1;i<=n;i++)
{
l=i+1;
r=n;
while(l<=r)
{
mid=(l+r)/2;
if(a[i]+m<=a[mid])
{
r=mid-1;
}
else
{
l=mid+1;
}
}
w=l;
l=i+1;
r=n;
while(l<=r)
{
mid=(l+r)/2;
if(a[i]+m<a[mid])
{
r=mid-1;
}
else
{
l=mid+1;
}
}
q=l;
t+=q-w;
}
printf("%d",t);
return 0;
}