// Sigue una sola mezcla, vuelta por vuelta. Cuando pasa un elemento de la derecha, también dice
// cuántos elementos seguían en la izquierda.
#include <cstddef>
#include <iostream>
#include <vector>

int main() {
    std::vector<int> a = {2, 5, 6, 1, 3, 4};
    std::size_t mid = 3;
    std::size_t hi = a.size();
    std::size_t i = 0;
    std::size_t j = mid;
    std::cout << "k  i  j  pasa  de         quedan a la izquierda\n";
    for (std::size_t k = 0; k < hi; k++) {
        std::cout << k << "  " << i << "  " << j << "  ";
        if (j == hi || (i < mid && a[i] <= a[j])) {
            std::cout << a[i] << "     izquierda  -\n";
            i++;
        } else {
            std::cout << a[j] << "     derecha    " << mid - i << '\n';
            j++;
        }
    }
}
