Hay que implementar una función que recibe un vector de naturales que tiene dos partes, una primera parte estrictamente creciente y una segunda parte estrictamente decreciente. En otras palabras, existe un índice válido del vector tal que, para todo anterior a se cumple , y para todo posterior a se cumple . Se garantiza que el vector tiene como mínimo tres elementos y que su valor máximo (es decir, , para el mencionado) no se encuentra ni exactamente al principio ni al final.
La función deberá retornar el valor máximo de . 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);
Sólo tenéis que enviar el procedimiento requerido; el programa principal será ignorado.
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.
Autoría: PRO1
Generación: 2026-01-25T15:13:55.050Z
© Jutge.org, 2006–2026.
https://jutge.org