https://iai.sh.cn/problem/243
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[100005],mway,ans;
signed main(){
cin>>n>>mway;
for(int i=0;i<n;i++){
cin>>a[i];
}
int b,c;
sort(a,a+n);
for(b=0,c=1;c<n;){
int per=0;
while(a[c]-a[b]<=mway and c<n){
c++;
per++;
}
ans+=per+per-1;
b++;
}
for(int i=1;i<c-b;i++){
ans+=i;
}
cout<<ans;
return 0;
}
样例过了,但交上去全错,双指针。
思路是c浮标从左到右直到达到上限,b浮标加一,c浮标在原基础上再累加,直到n,再用数学法算出来