Feu una funció recursiva tal que, donada una pila d’enters positius, no necessàriament ordenada, i que tindrà, almenys, un element. retorni la mateixa pila però eliminant-ne els elements que no estiguin ordenats de manera extrictament creixent (des del cim cap al fons de la pila). Per exemple, si tenim la pila:
| 3 |
| 5 |
| 4 |
| 5 |
| 7 |
| 8 |
| 2 |
-----
veiem que si eliminem el 4, el 2 i el segon 5, llavors la pila estarà ordenada:
| 3 |
| 5 |
| 7 |
| 8 |
-----
És a dir, a partir del cim, anem eliminant els element que no estiguin ordenats. La pila ha de quedar ordenada de manera creixent a partir del cim (de dalt a baix, anem a dir).
La capçalera de la funció serà:
stack<int> pilaOrdenada (stack<int> P)
La puntuació que podeu obtenir és la següent:
Només acceptarem una solució recursiva per a aquest problema.
Quan diem especificació de la funció, H.I. i funció fita volem dir que hi ha de ser tot. Dit altrament: no es donarà una fracció dels 2 punts si doneu només, per exemple, l’especificació de la funció, o només la H.I. i la fita. Se us donarà la bonificació dels 2 punts únicament si feu totes 3 coses correctament.
Entrada
Una llista d’enters positius i que representa una pila d’enters, és a dir, el primer element de la seqüència és el fons de la pila, i el darrer n’és el cim, tot i que això no té importància, ja que us donem el programa principal que s’encarrega de llegir de l’entrada estàndard i fa la crida a la funció.
Sortida
Els elements que queden a la pila d’entrada eliminant-ne els element que no estiguin ordenats.
Observació
Heu d’enviar la solució comprimida en un fitxer .tar:
tar cvf program.tar pilaOrdenada.cpp
Observeu que per compilar us donem el Makefile,
la capçalera del mòdul funcional pilaOrdenada.hpp
i el programa principal program.cpp.
Jutge.org també us donarà un semàfor verd si envieu una solució iterativa, però no serà correcte ja que l’enunciat del problema demana que la solució enviada sigui recursiva.
Input
2 8 7 5 4 5 3 2 8 1 2 3 4 5 6 5 5 4 3 2 1
Output
8 7 5 3 8 6 5 4 3 2 1
Input
2 3 4 4 5 5 2 1 1 2 3 5 7 5 3 2 2 6 5 4 3 1
Output
5 2 1 7 5 3 2 6 5 4 3 1