Vector montañoso X41120


Statement
 

pdf   zip

html

Podemos describir el perfil de desnivel de una excursión por la montaña mediante las alturas (respecto del nivel del mar) de diferentes puntos consecutivos del trayecto. Una forma de almacenar esta información y de representar así el perfil montañoso es mediante un vector que guarde las alturas de diferentes puntos del trayecto y, en particular, de las cimas que atraviesa.

Por ejemplo, el vector

v = [0, 250, 515, 880, 430, 990, 1300, 1000, 700, 400, 0]

descrive la ascención a dos montañas con punto de partida i de regreso a nivel del mar. La primera cima del trayecto se encuentra a 880m, y la segunda a 1300m.

Escribid un programa que, dado un perfil montañoso representado en un vector, calcule el número de cimas que contiene y cuáles de ellas son más altas que la última cima del perfil.

Vuestro programa tiene que implementar y utilizar la función siguiente:

// PRE: |v|≥ 3

// POST: devuelve un vector con la altura de todos las cimas de v (en el mismo orden)

vector<int> calcula_cimas(const vector<int>& v);

que, dado un vector v que representa un perfil montañoso, devuelve un vector w (con |w|<|v|) con todas las cimas de v en el mismo orden en que aparecían. El vector devuelto solo contiene las cimas de v.

Entrada

La entrada está formada por un natural n≥ 3 que indica el número de puntos del perfil montañoso. A continuación se encuentran los n registros de altura de los diferentes puntos del trayecto. Las alturas son números enteros.

Salida Hay que indicar el número total de cimas que tiene el perfil montañoso descrito en la entrada y la altura de dichas cimas. A continuación, la altura de aquellas cimas que sean más altas que la última cima descrita en el perfil. En caso que no haya ninguna cima en el perfil, o que no haya cimas más altas que la última, hay que indicarlo convenientemente.

Seguid el formato especificado en los ejemplos. Vuestro código tiene que seguir las normas de estilo, y debe estar debidamente comentado.

Public test cases
  • Input

    10
    0 515 880 430 990 1300 1000 700 400 0
    

    Output

    2: 880 1300
    -
    
  • Input

    10
    0 880 430 990 300 700 400 405 400 0
    

    Output

    4: 880 990 700 405
    880 990 700
    
  • Input

    5
    0 100 200 300 400
    

    Output

    0:
    -
    
  • Input

    5
    0 100 100 100 0
    

    Output

    0:
    -
    
  • Input

    3
    100 814 400
    

    Output

    1: 814
    -
    
  • Information
    Author
    Professorat de PRO1
    Language
    Spanish
    Translator
    Maria Blesa
    Original language
    Catalan
    Other languages
    Catalan English
    Official solutions
    Unknown. This problem is being checked.
    User solutions
    C++