// Suma n elementos llamando a una función en cada vuelta. Uso: copy_in_loop n copy|ref
#include <cstdlib>
#include <iostream>
#include <string>
#include <vector>

#include "value_at.h"

int main(int argc, char *argv[]) {
    if (argc != 3) {
        std::cerr << "uso: copy_in_loop n copy|ref\n";
        return 1;
    }
    std::size_t n = std::strtoul(argv[1], nullptr, 10);
    std::string mode = argv[2];
    std::vector<int> values(n, 1);

    long long sum = 0;
    long long copied = 0;
    for (std::size_t i = 0; i < n; i++) {
        if (mode == "copy") {
            sum += value_at_copy(values, i);
            copied += values.size();
        } else {
            sum += value_at_ref(values, i);
        }
    }
    std::cout << "suma = " << sum << ", elementos copiados = " << copied << "\n";
    return 0;
}
