Detalii evaluare #22577556

Rezumat problemă

Se consideră un text memorat într-o matrice M, definită prin coordonatele colţului stânga sus (x1,y1) şi coordonatele colţului dreapta jos (x2,y2).

Prin aplicarea unui algoritm de compresie, matricei M i se asociază un şir de caractere, notat CM. Şirul de caractere CM este construit prin aplicarea următoarelor reguli:

  1. dacă matricea M are o singură linie şi o singură coloană atunci CM conţine numai caracterul memorat în matrice;
  2. dacă toate elementele matricei sunt identice atunci întreaga matrice M se comprimă şi CM este şirul kc, unde k reprezintă numărul de caractere din matrice, iar c caracterul memorat;
  3. dacă matricea este formată din caractere diferite şi are cel puţin două linii şi două coloane atunci:
    • matricea este împărţită în 4 submatrice A, B, C, D după cum este ilustrat în figura alăturată, unde coordonatele colţului stânga sus ale submatricei A sunt (x1,y1), iar coordonatele colţului dreapta jos sunt ((x2+x1)/2,(y2+y1)/2);
    • CM este şirul *CACBCCCD unde CA, CB, CC, CD sunt şirurile de caractere obţinute, în ordine, prin compresia matricelor A, B, C, D utilizând acelaşi algoritm;
  4. dacă matricea este formată din caractere diferite, are o singură linie şi mai multe coloane atunci CM este şirul *CACB unde A, B, CA, CB au semnificaţia descrisă la punctul 3.;
  5. dacă matricea este formată din caractere diferite, are mai multe linii şi o singură coloană atunci CM este şirul *CACC unde A, C, CA, CC au semnificaţia descrisă la punctul 3.;

Dat fiind şirul de caractere CM ce se obţine în urma aplicării algoritmului de compresie asupra unei matrice M de dimensiune NxN să se determine:

  1. numărul de împărţiri care au fost necesare pentru obţinerea textului compresat;
  2. matricea iniţială din care provine textul compresat.

Detalii

Problema Compresie Operații I/O compresie.in/compresie.out
Limita timp 0.5 secunde Limita memorie Total: 4 MB / Stivă 3 MB
Id soluție #22577556 Utilizator 5 sos (numedecod)
Fișier compresie.cpp Dimensiune 1.53 KB
Data încărcării 23 Aprilie 2020, 21:57 Scor / rezultat 25 puncte

Evaluare


Mesaj compilare

compresie.cpp: In function 'void mat(int, int, int, int)':
compresie.cpp:13:39: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (x1<=x2 && y1<=y2 && k<strlen(s))

                                       ^
compresie.cpp: In function 'int main()':
compresie.cpp:36:28: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i=0;i<strlen(s);i++)

                            ^

Rezultat evaluare

Test Timp Mesaj evaluare Scor posibil Scor obținut
1 0 secunde OK. 5 5
2 0 secunde OK. 5 5
3 0.04 secunde OK. 5 5
4 0.112 secunde OK. 5 5
5 Depășit Limita de timp depășită 5 0
6 Depășit Limita de timp depășită 5 0
7 Depășit Limita de timp depășită 5 0
8 Depășit Limita de timp depășită 5 0
9 Depășit Limita de timp depășită 5 0
10 Depășit Limita de timp depășită 5 0
11 Depășit Limita de timp depășită 5 0
12 Depășit Limita de timp depășită 5 0
13 Depășit Limita de timp depășită 5 0
14 Depășit Limita de timp depășită 5 0
15 Depășit Limita de timp depășită 5 0
16 Depășit Limita de timp depășită 5 0
17 Depășit Limita de timp depășită 5 0
18 Depășit Limita de timp depășită 5 0
19 Depășit Limita de timp depășită 5 0
20 0.408 secunde OK. 5 5
Punctaj total 25

Cum funcționează evaluarea?

www.pbinfo.ro permite evaluarea a două tipuri de probleme:

  • probleme la care rezolvarea presupune scrierea unui program complet
  • probleme la care rezolvarea presupune scrierea unei secvențe de program - câteva instrucțiuni, o listă de declarații, una sau mai multe funcții, etc.

Problema Compresie face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:

  • Programul sursă este compilat folosind compilatorul corespunzător. Dacă în urma compilării se obțin erori sau avertismente, acestea sunt afișate în această pagină.
  • Dacă programul a fost compilat, executabilul obținut va fi rulat, furnizându-i-se unul sau mai multe seturi de date de intrare, în concordanță cu restricțiile specifice problemei. Pentru fiecare set de date se obține un anumit punctaj, în raport cu corectitudinea soluției tale.

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ă.