Donada la classe que permet guardar seqüències d’enters amb una llista simplement encadenada, amb fantasma i no circular, cal implementar el mètode
void fusiona_suma(Llista &l2, nat n);
que fusiona els elements del paràmetre implícit i de agafant elements del paràmetre implícit i elements de alternativament (o els que quedin si n’hi ha menys de ). Al principi del paràmetre implícit s’afegeix un nou element que conté la suma de tots els elements del paràmetre implícit i . La llista queda buida.
Per exemple, si inicialment tenim aquestes dues llistes:
p.i. [2 5 3 8 4]
l2 [1 6 9]
desprès de cridar amb , les dues llistes quedaran així:
p.i. [38 2 5 1 6 3 8 9 4]
l2 []
Pots veure més exemples en els jocs de prova públics. Cal enviar a jutge.org només la implementació del mètode . Indica dins d’un comentari a la capçalera del mètode el seu cost en funció del nombre d’elements de la llista del p.i. i nombre d’elements de la llista .
Per testejar la solució, jutge.org ja té implementats la resta de mètodes de la classe i un programa principal que processa línies d’enters amb els que crea dues llistes i desprès crida vàries vegades el mètode amb diferents valors de .
L’entrada conté dues línies formades per seqüències d’enters, són els elements que tindran les dues llistes inicials. A continuació segueix una seqüència d’enters que representen diferents valors de .
Per a cada valor d’entrada es fusionen i es sumen els elements de les dues llistes inicials agafant alternativament elements de cadascuna i s’escriu tres línies: El valor , el contingut de la primera llista i el contingut de la segona llista. Per cada llista s’escriu el nombre d’elements de la llista seguit d’un espai i dels elements de la llista entre claudàtors i separats per espais.
Cal enviar la solució (el fitxer ) comprimida en un fitxer :
tar cvf solution.tar solution.cpp
Només cal enviar la implementació del mètode i el seu cost en funció del nombre d’elements i de les dues llistes inicials. Segueix estrictament la definició de la classe de l’enunciat.
Input
2 5 3 8 4 1 6 9 1 2 3 4 5 6
Output
1 9 [38 2 1 5 6 3 9 8 4] 0 [] 2 9 [38 2 5 1 6 3 8 9 4] 0 [] 3 9 [38 2 5 3 1 6 9 8 4] 0 [] 4 9 [38 2 5 3 8 1 6 9 4] 0 [] 5 9 [38 2 5 3 8 4 1 6 9] 0 [] 6 9 [38 2 5 3 8 4 1 6 9] 0 []
Input
3 -6 8 0 4 -2 -5 1 2 3 4 5 6 7
Output
1 8 [2 3 -5 -6 8 0 4 -2] 0 [] 2 8 [2 3 -6 -5 8 0 4 -2] 0 [] 3 8 [2 3 -6 8 -5 0 4 -2] 0 [] 4 8 [2 3 -6 8 0 -5 4 -2] 0 [] 5 8 [2 3 -6 8 0 4 -5 -2] 0 [] 6 8 [2 3 -6 8 0 4 -2 -5] 0 [] 7 8 [2 3 -6 8 0 4 -2 -5] 0 []
Input
-5 3 -6 8 0 4 -2 1 2
Output
1 8 [2 -5 3 -6 8 0 4 -2] 0 [] 2 8 [2 -5 3 -6 8 0 4 -2] 0 []
Input
3 -6 8 0 4 -2 1 2
Output
1 7 [7 3 -6 8 0 4 -2] 0 [] 2 7 [7 3 -6 8 0 4 -2] 0 []
Input
3 -6 8 0 4 -2 1 2
Output
1 7 [7 3 -6 8 0 4 -2] 0 [] 2 7 [7 3 -6 8 0 4 -2] 0 []
Input
1 2
Output
1 1 [0] 0 [] 2 1 [0] 0 []