Să considerăm o imagine alb-negru de dimensiune pixeli. Un pixel poate fi alb (codificat cu valoarea ) sau negru (codificat cu valoarea ). Imaginile pot fi compresate în diverse moduri. Una dintre cele mai cunoscute scheme de compresie este următoarea:
- Dacă imaginea este formată atât din pixeli , cât şi din pixeli , se reţine valoarea , care indică faptul că imaginea va fi partiţionată în alte subimagini, aşa cum este descris la pasul . Altfel codificăm întreaga imagine ca sau semnificând faptul că întreaga imagine este formată numai din pixeli , respectiv numai din pixeli .
- O imagine este împărţită în subimagini după cum este ilustrat în figura următoare:
În mod particular, dacă la un pas al împărțirii, una dintre imagini este goală, se va codifica imaginea drept .
Apoi se aplică din nou pasul , pentru fiecare dintre cele subimagini, în ordinea .
Numărul de biţi (cifre de sau ) obţinuţi în urma compresiei reprezintă dimensiunea imaginii compresate.
Cerință
Dată fiind o imagine, să se determine dimensiunea imaginii compresate.
Date de intrare
Fişierul de intrare imagine.in
conţine pe prima linie (dimensiunea imaginii). Urmăroarele linii conţin imaginea codificată, fiecare linie conţinând exact valori sau separate prin câte un spaţiu.
Date de ieșire
Fişierul de ieşire imagine.out
conţine o singură linie pe care se află un număr natural care reprezintă dimensiunea imaginii compresate.
Restricții și precizări
- ;
- este o putere de a lui .
Exemplul 1
imagine.in
4
1 1 1 1
1 1 0 1
0 1 0 0
0 0 1 1
imagine.out
30
Explicație
Compresia imaginii din exemplul se realizează astfel:
Deoarece după compresare sunt necesari de biţi, dimensiunea imaginii compresate este .
Exemplul 2
imagine.in
8
0 0 0 0 1 1 1 1
0 0 0 0 1 1 1 1
0 0 0 0 1 1 1 1
0 0 0 0 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
imagine.out
9
Explicație
Compresia imaginii din exemplul se realizează astfel:
În acest caz dimensiunea imaginii compresate este .