// Cuenta propuestas y casillas miradas, sin reloj: estos números no dependen de la máquina.
#include <iomanip>
#include <iostream>
#include <random>

#include "instances.h"

namespace {

void row(const char* name, int n, const Preferences& proposers, const Preferences& receivers) {
    long long steps = 0;
    Matching result = gale_shapley_scan(proposers, receivers, steps);
    std::cout << std::left << std::setw(11) << name << std::right << std::setw(6) << n
              << std::setw(11) << result.proposals << std::setw(14) << steps << '\n';
}

}  // namespace

int main() {
    std::cout << "instancia      n  propuestas  casillas\n";
    for (int n : {250, 500, 1000, 2000}) {
        row("adversa", n, same_list_proposers(n), latest_wins_receivers(n));
    }
    std::mt19937 gen(2026);
    for (int n : {250, 500, 1000, 2000}) {
        Preferences proposers = random_preferences(n, gen);
        Preferences receivers = random_preferences(n, gen);
        row("al azar", n, proposers, receivers);
    }
}
