Detalii evaluare #16320127

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 #16320127 Utilizator Mindrescu Albert (AlbertMindrescu)
Fișier compresie.cpp Dimensiune 1.64 KB
Data încărcării 11 Iulie 2019, 01:52 Scor / rezultat 100 puncte

Evaluare


Mesaj compilare

compresie.cpp: In function 'void Parcurgere()':
compresie.cpp:41:15: warning: converting to non-pointer type 'char' from NULL [-Wconversion-null]
   sir[++nrsir]=NULL;

               ^
compresie.cpp:24:7: warning: unused variable 'i' [-Wunused-variable]
 { int i,k,j;

       ^
compresie.cpp: In function 'void Rezolva(int, int, int, int)':
compresie.cpp:45:7: warning: unused variable 'i' [-Wunused-variable]
 { int i,lm,cm;

       ^

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 secunde OK. 5 5
4 0.008 secunde OK. 5 5
5 0.016 secunde OK. 5 5
6 0.036 secunde OK. 5 5
7 0.04 secunde OK. 5 5
8 0.048 secunde OK. 5 5
9 0.068 secunde OK. 5 5
10 0.068 secunde OK. 5 5
11 0.048 secunde OK. 5 5
12 0.028 secunde OK. 5 5
13 0.076 secunde OK. 5 5
14 0.052 secunde OK. 5 5
15 0.052 secunde OK. 5 5
16 0.06 secunde OK. 5 5
17 0.076 secunde OK. 5 5
18 0.072 secunde OK. 5 5
19 0.06 secunde OK. 5 5
20 0.056 secunde OK. 5 5
Punctaj total 100

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