这道题很显然可以用O(n2)的方法来做(记得排序),由于数据较水。。。但还是在for循环中加一些优化:++i,据说这样会快一些...
#include<bits/stdc++.h> using namespace std; int n,d,a[1000010],ans; int main(){ scanf("%d%d",&n,&d); for(int i=1;i<=n;++i) scanf("%d",&a[i]); sort(a+1,a+n+1); for(int i=1;i<=n;++i) for(int j=i+1;j<=n;++j){ if(a[j]-a[i]>d) break; ++ans; } printf("%d ",ans);return 0; }