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 és simpàtic, el seu màxim és i el seu màxim-esquerrà és . La seva simpatia és .
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.
L’entrada conté una seqüència de vectors simpàtics. Cada vector comença amb un natural , seguit dels seus elements.
Cal escriure la simpatia de cada vector de l’entrada, amb sis dígits darrera el punt decimal.
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);
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