// Error a propósito: con lo = mid el rango deja de reducirse y el ciclo no termina.
#include <cstddef>
#include <iostream>
#include <vector>

int main() {
    std::vector<int> items = {2, 3, 5, 8};
    int x = 9;
    std::size_t lo = 0;
    std::size_t hi = items.size();
    long long steps = 0;
    while (lo < hi) {
        std::size_t mid = lo + (hi - lo) / 2;
        if (steps < 4) {
            std::cout << "lo=" << lo << " hi=" << hi << " mid=" << mid << std::endl;
        }
        steps++;
        if (items[mid] < x) {
            lo = mid;
        } else {
            hi = mid;
        }
    }
    std::cout << "termina en " << lo << "\n";
    return 0;
}
