arh

Time limit: 0.1s Memory limit: 64MB Input: arh.in Output: arh.outPoints by default: 10p

Dexter și-a definit propriul algoritm de arhivare a șirului favorit TT, șir format numai din litere mici ale alfabetului englez. Șirul arhivat, notat cu SS, poate fi format din cifre, litere mici ale alfabetului englez, parantezele drepte [ și ] și parantezele rotunde ( și ), precum și caractere *.

Fixi, curios din fire, descoperă algoritmul și încearcă să dezarhiveze șirul SS, prin efectuarea unor transformări repetate. O transformare poate fi de unul dintre cele 33 tipuri de mai jos, unde s-a notat cu CC o secvență din SS formată numai din litere.

  1. O secvență a lui SS de forma n(C), unde n este numărul natural poziționat imediat înaintea parantezei rotunde, se transformă într-o secvență DD obținută prin scrierea concatenată, de nn ori, a șirului CC.
    Exemplu: pentru secvența 10(ab) avem n=10n=10 și se obține secvența D=D= abababababababababab.
  2. O secvență a lui SS de forma [*C] se transformă într-o secvență palindromică de lungime pară, obținută prin concatenarea secvenței CC cu oglinditul lui CC.
    Exemplu: din secvența [*abc] se obține secvența palindromică de lungime pară abccba
  3. O secvență a lui SS de forma [C*] se transformă într-o secvență palindromică de lungime impară, obținută prin concatenarea secvenței CC cu oglinditul lui CC din care s-a eliminat primul caracter.
    Exemplu: din secvența [abc*] se obține secvența palindromică de lungime impară abcba.

Un șir se consideră dezarhivat dacă este format numai din litere mici ale alfabetului englez.

Cerințe

Fiind dat șirul arhivat SS să se determine numărul de transformări, de cele 33 tipuri de mai sus, realizate de Fixi în cadrul algoritmului de dezarhivare, precum și forma finală dezarhivată TT a șirului SS.

Date de intrare

Fișierul de intrare arh.in conține șirul de caractere arhivat S.

Date de ieșire

Fișierul de ieșire arh.out conține obligatoriu două linii. Pe prima linie numărul de transformări cerut, iar pe linia a doua șirul de caractere cerut, TT.

Restricții și precizări

  • Lungimea șirului arhivat SS este cuprinsă între 11 și 10 00010 \ 000, inclusiv;
  • Lungimea șirului dezarhivat TT este cuprinsă între 11 și 100 000100 \ 000, inclusiv;
  • 2n1 0002 \leq n \leq 1 \ 000;
  • O secvență a unui șir este o succesiune de caractere aflate pe poziții consecutive în şir;
  • În șirul SS:
    • O cifră poate apărea numai imediat înaintea unei paranteze rotunde deschise sau imediat înaintea unei alte cifre;
    • Fiecare paranteză rotundă deschisă are imediat înaintea sa cel puțin o cifră;
    • Toate parantezele, drepte sau rotunde, se închid corect;
    • Caracterul * poate apărea numai imediat după o paranteză dreaptă deschisă sau imediat înaintea unei paranteze drepte închise.
  • O secvenţă a unui șir este palindromică dacă primul element al secvenţei este egal cu ultimul, al doilea cu penultimul etc;
  • Oglinditul unei secvențe se obține prin scriere în ordine inversă a caracterelor sale;
  • Se acordă 20%20\% din punctajul fiecărui test pentru scrierea corectă a numărului cerut și 80%80\% din punctajul fiecărui test pentru scrierea corectă a șirului cerut;
  • Pentru 3030 de puncte șirul arhivat SS poate fi dezarhivat numai cu transformări de tipul 11;
  • Pentru alte 3030 de puncte șirul arhivat SS poate fi dezarhivat numai cu transformări de tipurile 22 și 33.

Exemplul 1

arh.in

2(a)[*a2(b)]xy[2(c)b*]d

arh.out

5
aaabbbbaxyccbccd

Explicație

2(a) => aa
2(b) => bb
[*a2(b)] => [*abb] => abbbba
2(c) => cc
[2(c)b*] => [ccb*] => ccbcc

Exemplul 2

arh.in

2(ab[cd*])a3(xyz)

arh.out

3
abcdcabcdcaxyzxyzxyz

Explicație

3(xyz) => xyzxyzxyz
[cd*] => cdc
2(ab[cd*]) => 2(abcdc) => abcdcabcdc

Exemplul 3

arh.in

abcd

arh.out

0
abcd

Explicație

Nu este nevoie de nicio transformare, iar șirul dezarhivat este identic cu cel arhivat.

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