Vector U

Un vector U és un vector d’enters que té tres parts: una baixada, una vall i una pujada. La baixada b1bkb_1 \dots b_k és un subvector tal que tots els elements estan en ordre estrictament decreixent. La vall v1vmv_1 \dots v_m és un subvector on tots els elements són iguals. La pujada p1pnp_1 \dots p_n és un subvector tal que tots els seus valors estan en ordre estrictament creixent.

A més, es compleixen aquestes dues condicions:

  1. k1k \geq 1, m3m \geq 3 i n1n \geq 1. Dit altrament: tant la baixada com la pujada tenen almenys un element, mentre que la vall en té, almenys, tres.

  2. bk>v1b_k > v_1 i vm<p1v_m < p_1.

Per exemple, el vector V = [5 4 3 2 1 1 1 6 7 8 9 10] és un vector U:

$\underbrace{\verb|5 4 3 2|}$ $\underbrace{\verb|1 1 1|}$ $\underbrace{\verb|6 7 8 9 10|}$
baixada vall pujada

El colze U és la posició d’un vector U on es troba vmv_m, és a dir, el darrer element de la vall. Per exemple, per al vector V = [5 4 3 2 1 1 1 6 7 8 9 10] la posició del colze U és 6, ja que és la posició on es troba el darrer element de la vall.

Has de fer la funció colzeU, que torna la posició del colze U d’un vector U.

/* PRE:  v és un vector U.
   POST: torna la posició del colze U de v.
*/

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

Observació

Només has d’enviar un fitxer que contingui la funció requerida, amb els include necessaris i les funcions auxiliars que hauràs declarat (si n’hi ha), i res més.

Proposeu una solució utilitzant cerca dicotòmica per aquest exercici. Qualsevol altre tipus de solució implica l’anul·lació total de tot l’exercici, independentment del veredicte del jutge.

Entrada

Un vector U d’enters.

Sortida

La posició del colze U.

Informació del problema

Autoria: PRO1

Generació: 2026-01-25T19:58:57.878Z

© Jutge.org, 2006–2026.
https://jutge.org