/**
 * @param {number[]} arr
 * @param {number} k
 * @param {number} x
 * @return {number[]}
 */
var findClosestElements = function (arr, k, x) {
    let [leftPtr, rightPtr] = [0, arr.length - k];
    while (leftPtr < rightPtr) {
        /*  This is basically rightPtr+leftPtr/2 written differently to
            avoid any overflow incase it happens.
        */
        let mid = parseInt(rightPtr + (leftPtr - rightPtr) / 2);

        if (x - arr[mid] > arr[mid + k] - x) {
            leftPtr = mid + 1;
        } else {
            rightPtr = mid;
        }
    }
    return arr.slice(leftPtr, leftPtr + k);
};