// Un programa equivocado que pasa 1000 pruebas al azar.
#include <algorithm>
#include <iostream>
#include <random>
#include <vector>

// Mal: empieza en 0, así que nunca devuelve un máximo negativo.
int maximum_wrong(const std::vector<int>& a) {
    int best = 0;
    for (int value : a) {
        if (value > best) {
            best = value;
        }
    }
    return best;
}

int main() {
    std::mt19937 gen(2026);
    int passed = 0;
    for (int test = 0; test < 1000; test++) {
        std::vector<int> a(1 + gen() % 100);
        for (int& value : a) {
            value = static_cast<int>(1 + gen() % 1000000);
        }
        if (maximum_wrong(a) == *std::max_element(a.begin(), a.end())) {
            passed++;
        }
    }
    std::cout << "pruebas al azar con valores positivos: " << passed << " de 1000 correctas\n";

    std::vector<int> negatives = {-5, -2, -9};
    std::cout << "con {-5, -2, -9}: devuelve " << maximum_wrong(negatives)
              << ", y el máximo es " << *std::max_element(negatives.begin(), negatives.end()) << '\n';
}
