/** Binary search on prefix sums */ export const findIndexByScroll = (prefix: number[], value: number) => { let low = 0; let high = prefix.length - 1 while (low < high) { const mid = (low + high) >> 1 if (prefix[mid] <= value) low = mid + 1 else high = mid } return Math.max(0, low - 1) }