我们先用最朴素的方法想 就是三重循环 我们可以尝试消去最内层的循环 只枚举x和y
#include <bits/stdc++.h>
using namespace std;
int q[1010];
int main()
{
int n;
cin >> n;
for(int i = 1; i <= n; i++)
cin >> q[i];
sort(q + 1, q + n + 1);
int res = 0;
// for(int i = 1; i <= n; i ++)
// {
// for(int j = i + 1; j <= n; j ++)
// {
// int l = lower_bound(q + 1, q + n + 1, 2 * q[j] - q[i]) - q;
// int r = upper_bound(q + 1, q + n + 1, 3 * q[j] - 2 * q[i]) - q;
// res += r - l;
// }
// }
for(int i = 1; i + 2 <= n; i++)
for(int j = i + 1, l = j, r = j; j + 1 <= n; j++)
{
while(l <= n && q[l] < 2 * q[j] - q[i]) l ++;
while(r <= n && q[r] <= 3 * q[j] - 2 * q[i]) r ++;
res += r - l;
}
cout << res << endl;
return 0;
}