// Experimentos de la sesión 2. Uso: run_session2 [archivo.csv]
#include <cstdio>
#include <fstream>
#include <vector>

#include "measure.h"
#include "vector_ops.h"

// Paso 4: una fila por n, duplicando desde 2000 hasta 32000, con fill_back o fill_front.
// Usen seconds_per_call, keep y fill_ratios. steps se queda en 0.
std::vector<Row> measure_fill(std::vector<int> (* /* fill */)(int)) {
    return {};
}

// Paso 5: una fila por n, duplicando desde 1000 hasta 512000, sobre un arreglo ordenado.
// Elijan bien qué key buscan en cada llamada, y explíquenlo en el informe.
// steps guarda las comparaciones de una búsqueda.
std::vector<Row> measure_search(int (* /* search */)(const std::vector<int>&, int, long long&)) {
    return {};
}

int main(int argc, char* argv[]) {
    const char* path = argc > 1 ? argv[1] : "session2.csv";
    std::ofstream out(path);
    if (!out) {
        std::printf("no se pudo abrir %s\n", path);
        return 1;
    }
    out << "function,n,steps,seconds,ratio\n";

    write_csv(out, "push_back", measure_fill(fill_back));
    write_csv(out, "insert_front", measure_fill(fill_front));
    write_csv(out, "linear_search", measure_search(linear_search));
    write_csv(out, "binary_search", measure_search(binary_search));
    std::printf("escrito %s\n", path);
    return 0;
}
