F011A. Vectors simpàtics P98770


Statement
 

pdf   zip

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\langle 2.5, 13, 1.5, 9, 14.5, 12.9 \rangle és simpàtic, el seu màxim és 14.514.5 i el seu màxim-esquerrà és 1313. La seva simpatia és (13+1.5+9+14.5)/4=9.5(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 n2n \ge 2, seguit dels seus nn 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++