#3541
RAU-Gigel este pasionat de grafică, așa că se gândește la un joc cu imagini. El creează într-un editor grafic o imagine bitmap binară de dimensiuni N X N pixeli. O imagine bitmap binară este o matrice de pixeli, fiecare pixel fiind un bit. Să considerăm că valoarea 0 (nesetat) înseamnă alb și valoarea 1 (setat) înseamnă negru (în realitate este exact invers!). Apoi RAU-Gigel împarte imaginea în patru imagini pătrate egale de latură N / 2 pe care le notează de la 1 la 4 (1 este imaginea din colțul dreapta-sus, 2 este cea din colțul dreapta-jos, 3 stânga-jos și 4 stânga-sus). El repetă procedeul pentru fiecare dintre cele 4 imagini obținute, și tot așa, reducând mereu latura la jumătate și notând direcțiile de la 1 la 4, până când ajunge la imagini de mărimea unui pixel.
Pentru simplitate, să presupunem că N este o putere a lui 2, să spunem K. Deci, după K împărțiri succesive de imagini, orice pixel poate fi identificat printr-un șir unic format din cifrele 1, 2, 3 și 4, de lungime K. Inițial, imaginea este complet albă.
Acum începe jocul. RAU-Gigel se gândește la 2 tipuri de operaţii:
Operaţia 1 x schimbă starea pixelul identificat cu șirul x, descris ca mai sus. Dacă pixelul x nu este setat, îl setează. Dacă pixelul x este deja setat, atunci îl resetează.
Operaţia 2 x , unde x are aceeași semnificație ca mai sus, este o interogare: dacă x este setat, se răspunde cu 0. Dacă x nu este setat, se cere determinarea dimensiunii celei mai mari imagini complet albe, dintre cele create de RAU-Gigel, care conține pixelul x. Dimensiunea este dată de numărul de pixeli conținut.
Dându-se N cu semnificația de mai sus și M, reprezentând numărul de operaţii şi cele M operaţii de tipul 1 și 2, să se răspundă la operaţiile de tip 2.
RAU-Coder 2020
| Problema | Pixeli | Operații I/O |
pixeli.in/pixeli.out
|
|---|---|---|---|
| Limita timp | 0.05 secunde | Limita memorie |
Total: 32 MB
/
Stivă 8 MB
|
| Id soluție | #44506190 | Utilizator | |
| Fișier | pixeli.cpp | Dimensiune | 1.50 KB |
| Data încărcării | 30 August 2023, 17:20 | Scor/rezultat | Eroare de compilare |
pixeli.cpp: In function 'void updateFlip(Nod*, std::string&, int)': pixeli.cpp:38:46: error: no matching function for call to 'Nod::Nod(<brace-enclosed initializer list>)' nod->sons[sonIdx] = new Nod{nod->sz / 4}; ^ pixeli.cpp:38:46: note: candidates are: pixeli.cpp:21:8: note: constexpr Nod::Nod() struct Nod { ^ pixeli.cpp:21:8: note: candidate expects 0 arguments, 1 provided pixeli.cpp:21:8: note: constexpr Nod::Nod(const Nod&) pixeli.cpp:21:8: note: no known conversion for argument 1 from 'int' to 'const Nod&' pixeli.cpp:21:8: note: constexpr Nod::Nod(Nod&&) pixeli.cpp:21:8: note: no known conversion for argument 1 from 'int' to 'Nod&&' pixeli.cpp: In function 'int query(Nod*, std::string&, int)': pixeli.cpp:59:46: error: no matching function for call to 'Nod::Nod(<brace-enclosed initializer list>)' nod->sons[sonIdx] = new Nod{nod->sz / 4}; ^ pixeli.cpp:59:46: note: candidates are: pixeli.cpp:21:8: note: constexpr Nod::Nod() struct Nod { ^ pixeli.cpp:21:8: note: candidate expects 0 arguments, 1 provided pixeli.cpp:21:8: note: constexpr Nod::Nod(const Nod&) pixeli.cpp:21:8: note: no known conversion for argument 1 from 'int' to 'const Nod&' pixeli.cpp:21:8: note: constexpr Nod::Nod(Nod&&) pixeli.cpp:21:8: note: no known conversion for argument 1 from 'int' to 'Nod&&'
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Pixeli 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ă.