La altura de la cima de una montaña

Hay que implementar una función que recibe un vector v de naturales que
tiene dos partes, una primera parte estrictamente creciente y una
segunda parte estrictamente decreciente. En otras palabras, existe un
índice i válido del vector tal que, para todo j anterior a i se cumple
v[j] < v[j + 1], y para todo j posterior a i se cumple v[j − 1] > v[j].
Se garantiza que el vector tiene como mínimo tres elementos y que su
valor máximo (es decir, v[i], para el i mencionado) no se encuentra ni
exactamente al principio ni al final.

La función deberá retornar el valor máximo de v. Esta es la cabecera:

    // Pre:  Let n be v.size(). Then n >= 3 and for all i in {0..n-1}, v[i] >= 0.
    //       Also, there exists i in {1..n-2} such that v[0..i] is strictly increasing and
    //                                                  v[i..n-1] is strictly decreasing.
    // Post: Returns the maximum value of v.
    int summitOfMountain(const vector<int> &v);

Observación

Sólo tenéis que enviar el procedimiento requerido; el programa principal
será ignorado.

Observación

Evaluación sobre 10 puntos:

- Solución lenta: 5 puntos.

- Solución rápida: 10 puntos.

Entendemos como solución rápida aquella que es correcta, de coste
logarítmico y capaz de superar los juegos de prueba públicos y privados.
Entendemos como solución lenta aquella que no es rápida, pero es
correcta y capaz de superar los juegos de prueba públicos.

Información del problema

Autoría: PRO1

Generación: 2026-01-25T15:13:55.050Z

© Jutge.org, 2006–2026.
https://jutge.org
