Simètrics. X87874


Statement
 

pdf   zip

html

Donat un enter n, definim el seu simètric com a −n. Per exemple, el simètric de 3 és −3, i el simètric de −6 és el 6.

Sigui un vector v = [x0, x1, x2, …, xn−1] (n és parell) tal que per qualsevol element de v, el seu simètric també està a v i no hi ha elements repetits.

Definim la distància entre un número x i el seu simètric −x com el nombre de números que hi ha entre tots dos.

Per exemple, si v = [3,−3,−5,2,−2,5], tenim que

la distància entre 3 i el seu simètric és 0,

la distància entre −5 i el seu simètric és 2,

la distància entre 2 i el seu simètric és 0.

Feu la funció :

int simetric(const vector<int>& v){

// Pre: v es un vector no buit de longitut parell

// on per a cada element existeix el seu simètric

// Post: retorna la distància màxima

En l’exemple anterior, en què v = [3,−3,−5,2,−2,5], la funció tornarà 2, que és la distància entre 5 i el seu simètric.

Després heu de fer un programa principal que llegeixi una seqüència d’enters acabada en 0, crei el vector amb tots els elements llegits menys el 0, cridi a la funció anterior i mostri el resultat per pantalla

Entrada

Una seqüència d’enters acabada en 0. La seqüència no conté elements repetits i per a cada element existeix el seu simètric.

Sortida

El màxim de totes les distàncies que hi ha entre un element i el seu simètric.

Public test cases
  • Input

    1 3 2 -3 -2 -1 0
    

    Output

    4
    
  • Input

    2 -1 -3 -2 3 1 0
    

    Output

    3
    
  • Information
    Author
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++