La altura de la cima de una montaña X33007


Statement
 

pdf   zip   main.cc

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:

  • 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.

Sample session
summitOfMountain([10, 11, 15, 7]) = 15
summitOfMountain([7, 12, 6, 3]) = 12
summitOfMountain([28, 65, 63, 59, 56, 51, 47, 44, 41, 36, 35, 32, 25, 24, 21, 16, 13, 9, 7]) = 65
summitOfMountain([9, 51, 46, 45, 42, 41, 36, 33, 29, 24, 22, 21, 19, 16, 11, 10, 7]) = 51
summitOfMountain([14, 17, 19, 21, 26, 31, 32, 33, 38, 42, 9]) = 42
summitOfMountain([6, 11, 21, 16]) = 21
summitOfMountain([2, 4, 5, 10, 16, 18, 21, 25, 27, 28, 34, 39, 53, 50, 48, 44, 30, 13]) = 53
summitOfMountain([5, 9, 11, 12, 16, 17, 27, 32, 37, 40, 42, 46, 48, 51, 52, 62, 59, 57, 22]) = 62
summitOfMountain([13, 21, 17, 9, 5]) = 21
summitOfMountain([10, 16, 13]) = 16
summitOfMountain([13, 26, 21, 20, 19, 14, 10, 5, 4]) = 26
summitOfMountain([18, 23, 29, 27, 14, 11, 9]) = 29
summitOfMountain([1, 5, 6, 7, 14, 16, 20, 24, 26, 33, 38, 44, 41, 29, 19, 9]) = 44
summitOfMountain([10, 12, 24, 28, 19, 17]) = 28
summitOfMountain([1, 2, 12, 9, 7]) = 12
summitOfMountain([11, 15, 23, 30, 31, 34, 37, 39, 45, 48, 50, 41, 28, 18, 8]) = 50
summitOfMountain([8, 13, 5]) = 13
summitOfMountain([6, 9, 10, 11, 3]) = 11
summitOfMountain([9, 15, 14, 8, 4]) = 15
summitOfMountain([5, 10, 20, 15]) = 20
Information
Author
PRO1
Language
Spanish
Translator
Original language
Catalan
Other languages
Catalan English
Official solutions
C++
User solutions
C++