Divisió Equilibrada

Sigui v un vector d’enters de mida n>2n > 2. Una divisió de v és una posició ii del vector (on 0in10 \leq i \leq n-1), tal que divideix el vector v en dues parts:

La divisió equilibrada és una posició ii de la llista tal que diferència entre la suma dels elements que hi ha des de la posició 00 fins a la posició i1i-1 i la suma dels elements entre les posicions ii i n1n-1 és mínima.

Feu la funció :

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

// Pre: v es un vector d'enters no buit de mida n > 2

// Post: Retorna la posició corresponent a la partició equilibrada

// Si n'hi haguessin més d'una retorna la de més a l'esquerra

Per exemple, si la funció rep el vector:

Tingueu en compte que, si calculeu la suma total de la llista al principi de la funció, podreu resoldre aquest problema amb una sola passada sobre el vector v. La primera vegada la suma de l’esquerra valdrà 00 i la suma de la dreta serà la suma de tots els elements. A partir d’aquí podeu pasar un element de la dreta a l’esquerra a cada passada.

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

Entrada

Una seqüència d’enters acabada en 00 de longitut n>2n > 2.

Sortida

La divisió equilibrada del vector v creat amb la seqüència d’entrada. Si n’hi haguessin més d’una, torneu la de més a l’esquerra.

Informació del problema

Autoria: INFO.

Generació: 2026-01-25T13:52:05.402Z

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