Vector muntanyos X41120


Statement
 

pdf   zip

html

Podem descriure el perfil de desnivell d’una excursió per la muntanya mitjançant les alçades (respecte al nivell del mar) de diferents punts consecutius del trajecte. Una forma d’emmagatzemar aquesta informació i representar així el perfil muntanyós és mitjançant un vector que guardi les alçades de diferents punts del trajecte i, en particular, dels cims que hi travessa.

Per exemple, el vector

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

descriu l’ascenció a dues muntanyes amb punt de partida i retorn a nivell del mar. El primer cim del trajecte s’hi troba a 880m, i el segon a 1300m.

Escriviu un programa que, donat un perfil muntanyós representat en un vector, calculi el nombre de cims que conté i quins d’aquests cims són més alts que l’últim cim del perfil.

El vostre programa ha d’implementar i fer servir la següent funció:

// PRE: |v|≥ 3

// POST: retorna un vector amb l’alçada de tots els cims de v (en el mateix ordre)

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

que, donat un vector v que representa un perfil muntanyós, retorna un vector w (amb |w|<|v|) amb tots els cims de v en el mateix ordre que hi apareixen. El vector retornat només conté els cims de v.

Entrada

L’entrada està formada per un natural n≥ 3 que indica el nombre de punts del perfil muntanyós. A continuació s’hi troben els n registres d’alçada dels diferents punts del trajecte. Les alçades són nombres enters.

Sortida

Cal indicar el nombre total de cims que té el perfil muntanyós descrit a l’entrada i les seves alçades. A continuació, l’alçada d’aquells cims que siguin més alts que l’últim cim descrit al perfil. En cas de no haver-hi cap cim al perfil, o de no haver-hi cims més alts a l’últim, cal indicar-ho convenientment.

Seguiu el format especificat als exemples. El vostre codi ha de seguir bones normes d’estil, i ha de contenir els comentaris que considereu oportuns.

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
    Catalan
    Other languages
    English Spanish
    Official solutions
    Unknown. This problem is being checked.
    User solutions
    C++