La altura de la cima de una montaña

Hay que implementar una función que recibe un vector vv de naturales que tiene dos partes, una primera parte estrictamente creciente y una segunda parte estrictamente decreciente. En otras palabras, existe un índice ii válido del vector tal que, para todo jj anterior a ii se cumple v[j]<v[j+1]v[j] < v[j+1], y para todo jj posterior a ii se cumple v[j1]>v[j]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]v[i], para el ii mencionado) no se encuentra ni exactamente al principio ni al final.

La función deberá retornar el valor máximo de vv. 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:

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