Scrabble

Time limit: 0.05s Memory limit: 1MB Input: scrabble.in Output: scrabble.out

Fiind în vacanță, RAU-Gigel petrece mult timp jucându-se pe telefon. El are un joc cu cuvinte, de tip Scrabble, în care piesele sunt inscripționate cu litere (mici sau mari, ale alfabetului englez), fiecare literă din alfabet având o valoare cunoscută, număr natural. Valoarea unui cuvânt este egală cu suma valorilor literelor din cuvânt, fără a se ține cont de frecvența lor.

De exemplu, valoarea cuvântului Abac este Val(Val(Abac)=Val() = Val(A)+Val() + Val(b)+Val() + Val(c)=1+2+4=7) = 1+2+4=7. Prin unirea a două cuvinte se obține cel mai mic (alfanumeric) cuvânt format din toate literele prezente în cele două cuvinte, fără să ținem cont de tipul literei (mică/mare) sau de numărul de apariții. Notăm acest cuvânt cu aba*b. Costul unirii dintre două cuvinte este obținut prin însumarea valorilor literelor prezente în aba*b, dar care nu sunt în aa, respectiv, care nu sunt în bb, ignorând tipul lor.

De exemplu, prin unirea cuvintelor a= a =\ Abac și b= b =\ cade se obține cuvântul ab= a*b =\ ABCDE, iar costul unirii poate fi calculat astfel: Val(Val(DE)+Val() + Val(B)=24+2=26) = 24 + 2 = 26.

Aplicația lui RAU-Gigel generează un șir liniar cu NN cuvinte, iar RAU-Gigel trebuie să unească două câte două cuvinte alăturate din șir, oricare, plătește costul necesar unirii lor, apoi înlocuiește în șir cele două cuvinte cu cuvântul obținut prin unire. La final, din șirul dat va rămâne un singur cuvânt, iar, pentru obținerea lui, RAU-Gigel va plăti suma tuturor costurilor generate pe parcurs.

Dacă, de exemplu, avem 33 cuvinte: Abac, cade și DAC, mai jos este ilustrată una dintre posibilitățile de unire:

Șir cuvinte Acțiune Cost
Abac, cade, DAC Se unesc mai întâi cuvintele Abac și cade și se obține ABCDE. 2626
ABCDE, DAC Se unesc ABCDE și DAC. Costul se calculează prin însumarea valorilor literelor B și E. 1818
ABCDE Cost final: 4444

Cel mai mic cuvânt alcătuit prin unirea celor 33 cuvinte, fără a ține cont de tipul literei (mică/mare) sau frecvență, va fi ABCDE, iar costul total necesar obținerii lui, conform alegerilor de mai sus, va fi 26+18=4426 + 18 = 44. Dar mai este o variantă: RAU-Gigel poate uni mai întâi cuvintele cade și DAC și obține ACDE, cu costul 1616, apoi unește Abac și ACDE și obține ABCDE, cu costul 2626. Costul total va fi de această dată: 16+26=4216 + 26 = 42.

Așadar, costul total minim este dat de cea de-a doua variantă și este 4242.

Cerință

Dându-se un sir de NN cuvinte, să se afle cuvântul final rezultat în urma reuniunii a două câte două cuvinte alăturate și costul total minim necesar obținerii acestuia.

Date de intrare

Fișierul scrabble.in conține pe primul rând numărul natural nenul NN, reprezentând numărul de cuvinte. Pe următoarele NN rânduri se află cele NN cuvinte.

Date de ieșire

Fișierul scrabble.out va conține, pe un sigur rând, cele două valori: cuvântul final și costul total minim necesar obținerii lui, conform cerinței. Cele două valori sunt separate printr-un spațiu.

Restricții și precizări

  • 2N1022 \leq N \leq 10^2, cuvintele nu au mai mult de 100100 de litere.
  • Pentru teste în valoare de 20 de puncte, N4N \leq 4.
  • Pentru teste în valoare de încă 10 de puncte, toate cele NN cuvinte au aceeași valoare.
  • Pentru teste în valoare de încă 20 de puncte, orice cuvânt include, în componența sa, literele cuvintelor din stânga lui (ignorând tipul literei), plus, eventual, alte litere.
  • Tipul literei = literă mică sau mare.

Exemplu

scrabble.in

3
Abac
cade
DAC

scrabble.out

ABCDE 42

Explicație

Cel mai mic cuvânt alcătuit prin unirea celor 33 cuvinte, fără a ține cont de tipul literei (mică/mare) sau frecvență, este: ABCDE, iar costul total minim necesar obținerii lui este 4242.

Log in or sign up to be able to send submissions!