Fusió ordenada des d'una altra llista (COPY) X48680


Statement
 

pdf   zip   main.cc

thehtml

Heu d’implementar una funció que rep dues llistes d’enters l1, l2 com a paràmetre per referència. Ambdues llistes se suposen ordenades creixentment. La funció haurà d’insertar tots els elements de l2 dins de l1, de manera que l1 continui quedant ordenat creixentment. En altres paraules, el valor final de l1 haurà de ser el resultat de fusionar ordenadament els valors inicials de l1 i l2.

Important: Heu de garantir que els elements que la llista l1 contenia inicialment queden inalterats. En particular, la funció no els pot eliminar i tornar a afegir després.

Aquesta és la capcelera:

// Pre: l1 i l2 estan ordenades creixentment. Siguin L1 i L2 els seus valors inicials.
// Post: l1 conté la fusió ordenada de L1 i L2.
//       A més a més, els elements inicials de la llista han persistit i
//       no han canviat de valor.
void mergeIntoFirstList(list<int> &l1, list<int> l2);

Aquí tenim un exemple de comportament de la funció:

mergeIntoFirstList([1,3,3,5],[2,3,4,7,8) = [1,2,3,3,3,4,5,7,8]

Observació Només cal enviar el procediment demanat; el programa principal serà ignorat.

Observació

La vostra funció i subfuncions que creeu han de treballar només amb llistes. Avaluació sobre 10 punts:

  • Solució lenta: 5 punts.
  • solució ràpida: 10 punts.

Entenem com a solució ràpida una que és correcta, de cost lineal i capaç de superar els jocs de proves públics i privats. Entenem com a solució lenta una que no és ràpida, però és correcta i capaç de superar els jocs de proves públics.

Una solució que altera, o elimina els elements originals de la primera llista i els torna a afegir més tard rebrà un 0.

Public test cases
  • Input/Output

    execute(3, 5, 5, 6, 6, 7) → 20
    execute(0, 1, 2, 7, 9) → hola
    execute(0, 2, 3, 6, 6, 6) →
    execute(0, 2, 2, 3, 5, 7, 7, 8, 9, 9) →
    execute(2, 3, 7, 8, 9) →
    execute(1, 1, 2, 3, 4, 7, 8, 9, 9) →
    execute(0, 0, 1, 3, 5, 6, 6) →
    execute(0, 1, 2, 4, 5, 5, 6, 7) →
    execute(3, 4, 5, 5, 6, 7, 9) →
    execute(4, 4, 4, 5, 7) →
    execute(0, 3, 4, 6, 7, 8, 8, 8) →
    execute(0, 2, 2, 4, 6, 6, 6, 8, 9, 9) →
    execute(0, 4, 5, 8, 9) →
    execute(0, 1, 1, 2, 2, 2, 6, 6, 7, 7) →
    execute(0, 4, 5, 9, 9, 9) →
    execute(1, 1, 5, 7, 7, 7, 7, 9) →
    execute(3, 3, 4, 5, 6, 6, 7, 8, 9) →
    execute(0, 2, 3, 5, 8, 8, 9, 9) →
    execute(1, 1, 3, 5, 5, 6, 6, 8, 9) →
    execute(0, 0, 1, 3, 4, 4, 4, 4, 8, 8) →
  • Information
    Author
    PRO2
    Language
    Catalan
    Official solutions
    Unknown.
    User solutions