我在下面标注了,帮帮孩子吧
#include <bits/stdc++.h>
using namespace std;
int arr[200020];
bool cmp(int x, int y) {
return x < y;
}//这里换成return x<=y;就有wa和tle了。
//百思不得其解,快把孩子逼疯了 >.<
int main() {
int n, c;
cin >> n >> c;
for (int i = 1; i <= n; i++)
cin >> arr[i];
sort(arr + 1, arr + n + 1, cmp);
int b = 1, tmp;
long long sum = 0;
while (b <= n) {
int l = b + 1, r = n;
while (l < r) {
int mid = (l + r) / 2;
if (arr[mid] >= arr[b] + c)
r = mid;
else
l = mid + 1;
}
if (arr[l] == arr[b] + c)
tmp = l;
else {
b++;
continue;
}
r = n;
while (l < r) {
int mid = (l + r + 1) / 2;
if (arr[mid] <= arr[b] + c)
l = mid;
else
r = mid - 1;
}
sum += l - tmp + 1;
b++;
}
cout << sum;
system("pause");
return 0;
}