#3444
Arh
Dexter și-a definit propriul algoritm de arhivare a șirului favorit T
, șir format numai din litere mici ale alfabetului englez. Șirul arhivat, notat cu S
, 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 S
, prin efectuarea unor transformări repetate. O transformare poate fi de unul dintre cele 3
tipuri de mai jos, unde s-a notat cu C
o secvență din S
formată numai din litere.
S
de forma n(C)
, unde n
este numărul natural poziționat imediat înaintea parantezei rotunde, se transformă într-o secvență D
obținută prin scrierea concatenată, de n
ori, a șirului C
. Exemplu: pentru secvența 10(ab)
avem n=10
și se obține secvența D=abababababababababab
.S
de forma [*C]
se transformă într-o secvență palindromică de lungime pară, obținută prin concatenarea secvenței C
cu oglinditul lui C
. Exemplu: din secvența [*abc]
se obține secvența palindromică de lungime pară abccba
S
de forma [C*]
se transformă într-o secvență palindromică de lungime impară, obținută prin concatenarea secvenței C
cu oglinditul lui C
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.
Fiind dat șirul arhivat S
să se determine numărul de transformări, de cele 3
tipuri de mai sus, realizate de Fixi în cadrul algoritmului de dezarhivare, precum și forma finală dezarhivată T
a șirului S
.
Problema | Arh | Operații I/O |
arh.in /arh.out
|
---|---|---|---|
Limita timp | 0.5 secunde | Limita memorie |
Total: 64 MB
/
Stivă 16 MB
|
Id soluție | #49611982 | Utilizator | |
Fișier | arh.cpp | Dimensiune | 6.45 KB |
Data încărcării | 09 Martie 2024, 12:32 | Scor / rezultat | 25 puncte |
arh.cpp: In function 'bool afct(char*)': arh.cpp:9:32: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int i = 0; i < strlen(s); i++){ ^ arh.cpp: In function 'int main()': arh.cpp:48:20: warning: converting to non-pointer type 'char' from NULL [-Wconversion-null] par[k] = NULL; ^ arh.cpp:56:42: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(j = 0; j < strlen(par); j++){ i++; ^ arh.cpp:62:24: warning: converting to non-pointer type 'char' from NULL [-Wconversion-null] par[j] = NULL; ^ arh.cpp:70:42: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(j = 0; j < strlen(par); j++){ i++; ^ arh.cpp:76:24: warning: converting to non-pointer type 'char' from NULL [-Wconversion-null] par[j] = NULL; ^ arh.cpp: In function 'void pal(char*, int)': arh.cpp:91:37: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int i = 0; i <= strlen(s); i++){ ^ arh.cpp:97:55: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int j = 0; j < strlen(auxi); j++){ ^ arh.cpp:100:73: warning: converting to non-pointer type 'char' from NULL [-Wconversion-null] else if(auxi[j] == ']' && cnt == 0) auxi[j] = NULL; ^ arh.cpp:108:55: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int j = 0; j < strlen(auxi); j++){ ^ arh.cpp:111:73: warning: converting to non-pointer type 'char' from NULL [-Wconversion-null] else if(auxi[j] == '*' && cnt == 0) auxi[j] = NULL; ^ arh.cpp:126:51: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int j = 0; j < strlen(auxi); j++){ ^ arh.cpp:129:69: warning: converting to non-pointer type 'char' from NULL [-Wconversion-null] else if(auxi[j] == ')' && cnt == 0) auxi[j] = NULL; ^ arh.cpp:141:15: warning: converting to non-pointer type 'char' from NULL [-Wconversion-null] }s[n] = NULL; ^ arh.cpp:145:15: warning: converting to non-pointer type 'char' from NULL [-Wconversion-null] }s[n] = NULL; ^ arh.cpp:89:24: warning: unused variable 'nr' [-Wunused-variable] int n = strlen(s), nr; --k; char auxi[10001]; ^ arh.cpp: In function 'void fnr(int, char*)': arh.cpp:153:37: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int i = 0; i <= strlen(s); i++){ ^ arh.cpp:159:55: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int j = 0; j < strlen(auxi); j++){ ^ arh.cpp:162:73: warning: converting to non-pointer type 'char' from NULL [-Wconversion-null] else if(auxi[j] == ']' && cnt == 0) auxi[j] = NULL; ^ arh.cpp:170:55: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int j = 0; j < strlen(auxi); j++){ ^ arh.cpp:173:73: warning: converting to non-pointer type 'char' from NULL [-Wconversion-null] else if(auxi[j] == '*' && cnt == 0) auxi[j] = NULL; ^ arh.cpp:188:51: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int j = 0; j < strlen(auxi); j++){ ^ arh.cpp:191:69: warning: converting to non-pointer type 'char' from NULL [-Wconversion-null] else if(auxi[j] == ')' && cnt == 0) auxi[j] = NULL; ^ arh.cpp:150:12: warning: unused variable 'n' [-Wunused-variable] int i, n = strlen(s); char aux[10001], auxi[10001]; ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
0 | 0 secunde | Corect! | 5 | 5 | ||
1 | 0 secunde | Corect! | 5 | 5 | ||
2 | 0 secunde | Partial corect! | 5 | 1 | ||
3 | 0 secunde | Corect! | 5 | 5 | ||
4 | 0 secunde | Partial corect! | 5 | 1 | ||
5 | 0 secunde | Partial corect! | 5 | 1 | ||
6 | 0.196 secunde | Caught fatal signal 11 | 5 | 0 | ||
7 | 0.008 secunde | Caught fatal signal 11 | 5 | 0 | ||
8 | 0.144 secunde | Caught fatal signal 11 | 5 | 0 | ||
9 | 0.084 secunde | Caught fatal signal 11 | 5 | 0 | ||
10 | 0 secunde | Partial corect! | 5 | 1 | ||
11 | Depășit | Limita de timp depășită | 5 | 0 | ||
12 | 0.28 secunde | Caught fatal signal 11 | 5 | 0 | ||
13 | 0.132 secunde | Caught fatal signal 11 | 5 | 0 | ||
14 | 0.4 secunde | Caught fatal signal 11 | 5 | 0 | ||
15 | 0.212 secunde | Caught fatal signal 11 | 5 | 0 | ||
16 | 0.312 secunde | Caught fatal signal 11 | 5 | 0 | ||
17 | 0.168 secunde | Caught fatal signal 11 | 5 | 0 | ||
18 | 0 secunde | Corect! | 5 | 5 | Exemplu | |
19 | 0 secunde | Partial corect! | 5 | 1 | Exemplu | |
Punctaj total | 25 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Arh face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.