F011A. Vectors simpàtics P98770


Statement
 

pdf   zip

thehtml

Un vector de reals és simpàtic si compleix totes les condicions següents:

El vector conté almenys dos elements.

Tots els elements del vector són diferents.

L’element màxim del vector no es troba a la primera posició.

El màxim-esquerrà d’un vector simpàtic és l’element més gran que es troba a l’esquerra del màxim. La simpatia d’un vector simpàtic és la mitjana dels elements que es troben entre el màxim-esquerrà i el màxim (ambdós inclosos).

Per exemple, el vector ⟨ 2.5, 13, 1.5, 9, 14.5, 12.9 ⟩ és simpàtic, el seu màxim és 14.5 i el seu màxim-esquerrà és 13. La seva simpatia és (13 + 1.5 + 9 + 14.5)/4 = 9.5.

Feu un programa que llegeixi vectors simpàtics i escrigui la seva simpatia. Per fer-lo, definiu i utilitzeu una acció

void calcula_posicions(const vector<double>& v, int& p, int& q);

que, donat un vector simpàtic, deixi al paràmetre de sortida p la posició del seu màxim, i deixi al paràmetre de sortida q la posició del seu màxim-esquerrà. Així, per a l’exemple anterior, caldria que p valgués 4 i q valgués 1.

Entrada

L’entrada conté una seqüència de vectors simpàtics. Cada vector comença amb un natural n ≥ 2, seguit dels seus n elements.

Sortida

Cal escriure la simpatia de cada vector de l’entrada, amb sis dígits darrera el punt decimal.

Observació

Recordeu que per escriure un real amb exactament n dígits darrera el punt decimal, cal afegir les dues línies següents al principi del main:

cout.setf(ios::fixed); cout.precision(n);
Public test cases
  • Input

    6   2.5 13 1.5 9 14.5 12.9
    2   11.1 22.2
    3   11.1 22.2 33.3
    3   11.1 33.3 22.2 
    10  5 7 4 3 6 2 1 10 8 9
    3   -9.99 -8.88 -7.77
    5   1.2339 7.8919 6.321 1 4.1423
    

    Output

    9.500000
    16.650000
    27.750000
    22.200000
    4.714286
    -8.325000
    4.562900
    
  • Information
    Author
    Professorat de P1
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++