#include <stdio.h> int cmp(const void *a, const void *b) { return *(int*)a - *(int*)b; }//qsort模版 int main() { int n, k; scanf("%d%d", &n, &k); int a[100005];//n可以是10的五次 long long sum = 0;//是long类型 for (int i = 0; i < n; i++) { scanf("%d", &a[i]); } qsort(a, n, sizeof(int), cmp);//比冒泡排要好很多,时间复杂度小 //这里不写判断条件,在下面判断 for (int i = n - 1; i >= 1;) { //不用写i>2,因为不用担心越界 if ((a[i] - a[i - 1]) <= k) { sum += (long long)a[i] * a[i - 1];//改为long,因为int是2e9,但是ai<1E5,乘积是1e10,大了 i = i - 2; } else { i = i - 1; } } printf("%lld", sum); return 0; }