Un resetejador d’una llista d’enters és un element que compleix dues condicions
És més gran que qualsevol dels elements anteriors a la seva posició.
La suma de tots els elements anteriors a la seva posició és superior o igual a 0.
Implementa un nou métode iteratiu de la classe List amb punters que, donada una llista d’enters, retorni tots els seus elements resetejadors. NOTA IMPORTANT: el primer element de la llista sempre és un resetejador.
Aquest mètode ha de trobar-se en el fitxer "ResetElements.cpp" i ha de tenir la següent capçalera
/* Pre: cert. */
/* Post: Retorna tots els elements de la llista que són resetejadors */
template<typename T>
vector<int> List<T>::ResetElements() {
}
NOTES IMPORTANTS:
L’algorisme ha de ser eficient, és a dir, que no realitzi càlculs innecessaris.
Entre els fitxers que s’adjunten en aquest exercici trobaràs el fitxer List.h que conté la implementació de la classe List amb punters. No cal que modifiquis aquest fitxer.
També trobaràs el fitxer program.cpp i el Makefile per a compilar i generar l’executable. El programa principal ja s’encarrega de llegir les dades de la llista i cridar al mètode indicat. Només cal que implementis el mètode ResetElements.
Es valorarà la correctesa i eficiència de la solució així com la correcta especificació de la precondició, la postcondició, la invariant del bucle i la funció fita.
Per a pujar la solució has de crear el fitxer solution.tar
així:
tar cf solution.tar ResetElements.cpp
Com a entrada hi haurà el número d’elements de la llista i els elements.
Com a sortida es mostraran els elements resetejadors.
Input
7 3 7 2 -1 9 3 4
Output
3 7 9
Input
2 2 8
Output
2 8
Input
8 9 3 1 7 -6 -4 -8 7
Output
9
Input
9 3 7 2 -3 -7 -2 9 2 6
Output
3 7 9