<script>
function
countTriplets(arr, N) {
arr.sort((a, b) => a - b);
let l, r, i, j, ans = 0;
for
(i = 0; i < N; i++) {
for
(j = i + 1; j < N; j++) {
let x = arr[j] - arr[i];
l = lower_bound(arr, 0, arr.length - 1, arr[j] + x);
console.log(arr, arr[j] + 2 * x)
r = upper_bound(arr, 0, arr.length - 1, arr[j] + 2 * x);
console.log(r)
if
(r == N || arr[r] != arr[j] + 2 * x)
r -= 1;
ans += r - l + 1;
}
}
return
ans;
}
function
upper_bound(arr, low, high, X) {
if
(low > high)
return
low;
let mid = Math.floor(low + (high - low) / 2);
if
(arr[mid] <= X) {
return
upper_bound(arr, mid + 1, high, X);
}
return
upper_bound(arr, low, mid - 1, X);
}
function
lower_bound(arr, low, high, X) {
if
(low > high) {
return
low;
}
let mid = Math.floor(low + (high - low) / 2);
if
(arr[mid] >= X) {
return
lower_bound(arr, low, mid - 1, X);
}
return
lower_bound(arr, mid + 1, high, X);
}
let arr = [1, 2, 3];
let N = arr.length;
let ans = countTriplets(arr, N);
document.write(ans);
</script>