Fes un procediment
template <typename T>
void ordena(stack<T> &p);
que ordeni @p@ de petit a gran utilitzant l’algorisme d’ordenació MergeSort adaptat a piles. El tipus @T@ admet una relació d’ordre total, és a dir, tenim una operació de comparació entre valors de tipus @T@.
Només s’ha d’enviar el procediment requerit.
Es demana que la solució només treballi amb piles. Per tant no es permet utilitzar altres estructures seqüèncials com vectors, cues o llistes.
En els següents exemples, l’entrada consisteix en vàries línies cadascuna d’elles representant una pila: El nombre d’elements de la pila seguit dels seus valors. La sortida mostra els elements de cadascuna de les piles un cop ordenades.
Input
1 10 0 2 10 20 2 20 10 3 10 20 30 3 10 30 20 3 20 30 10 3 20 10 30 3 30 10 20 3 30 20 10 4 1 2 3 4 4 1 2 4 3 4 1 3 2 4 4 1 3 4 2 4 1 4 2 3 4 1 4 3 2 4 4 2 3 1 4 4 2 1 3 4 4 3 2 1 4 4 3 1 2 4 4 1 2 3 4 4 1 3 2 4 -4 1 3 -2 6 4 1 3 2 1 4 6 4 1 3 2 3 3 2 0.0331172488308 0.153664419108 2 -0.0331172488308 -0.153664419108
Output
10 10 20 10 20 10 20 30 10 20 30 10 20 30 10 20 30 10 20 30 10 20 30 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 -4 -2 1 3 1 1 2 3 4 4 1 2 3 3 3 4 0.0331172 0.153664 -0.153664 -0.0331172