Evolució de molècules (2) X62507


Statement
 

pdf   zip

En un experiment amb nn molècules de diversos pesos enters s’ha detectat un fenomen curiós. Repetidament, les dues molècules més pesades es combinen, despareixen, i generen una nova molècula. Si la molècula més pesada té pes xx, i la segona més pesada té pes yy, poden passar dues coses. Si xx i yy acaben amb el mateix dígit, es farà una fusió de tipus AA i la nova molècula tindrà pes xy/2x - \lfloor y/2 \rfloor. Si acaben amb diferent dígit, es farà una fusió de tipus BB i la nova molècula tindrà pes xy/4x - \lfloor y/4 \rfloor. El procés acaba quan només queda una molècula.

Per exemple, si els pesos inicials són 21, 6, 3 i 20, primer es combinen 21 i 20, que fan una fusió de tipus BB i generen un 2120/4=215=1621 - \lfloor 20/4 \rfloor = 21 - 5 = 16. Ara tenim 6, 3 i 16, es combinen 16 i 6, que amb una fusió de tipus AA generen un 166/2=163=1316 - \lfloor 6/2 \rfloor = 16 - 3 = 13. Ara tenim 3 i 13, que es combinen amb una fusió de tipus AA i generen 133/2=131=1213 - \lfloor 3/2 \rfloor = 13 - 1 = 12, el qual és el pes de la molècula final. En el procés hem efectuat dues fusions de tipus AA i una de tipus BB.

Feu un programa que simuli eficientment aquest procés i escrigui el pes de l’última molècula, i el nombre de fusions de cada tipus.

Entrada

L’entrada consisteix en diversos casos. Cada cas comença amb el nombre de molècules nn, seguit dels nn pesos, tots enters entre 1 i 10910^9. Podeu assumir 1n1051 \le n \le 10^5.

Sortida

Per a cada cas, escriviu el pes de l’última molècula, seguit del nombre de fusions de tipus AA i el nombre de fusions de tipus BB.

Observació

Us desaconsellem que feu servir multisets per resoldre aquest problema.

Public test cases
  • Input

    4  21 6 3 20
    2  1000000000 999999999
    1  42
    3  23 23 23
    5  5 4 1 2 3
    

    Output

    12 2 1
    750000001 0 1
    42 0 0
    20 1 1
    4 0 4
    
  • Information
    Author
    Language
    Catalan
    Other languages
    English
    Official solutions
    C++
    User solutions
    C++