#150
Bulbuka este foarte pasionată de gătit deserturi. Ea a decis să facă (n+2)*(n+2) brioşe pe care le-a numerotat (cu ciocolată, bineinţeles) în modul următor: primele n*n brioşe au fost numerotate de la 1 la n*n, iar restul până la (n+2)*(n+2) au primit valoarea 0. De asemenea, după ce au fost gata, Bulbuka nu a putut rezista tentaţiei de a ordona brioşele într-un pătrat cu latura (n+2) după cum urmează: cele cu 0 pe conturul exterior iar cele numerotate de la 1 la n*n, în interior, în ordine crescătoare, pe linii, de sus in jos, ca în figura alăturată. Bulbuka a numit această aranjare configuraţia ordonată a brioşelor.
Acest aranjament frumos a durat foarte puţin deoarece, pe când Bulbuka stătea cu spatele, Randomel a amestecat brioşele între ele, într-o ordine aleatoare. Când s-a întors şi a văzut fapta, ea s-a supărat foarte tare şi l-a pedepsit pe Randomel punându-l să le aranjeze la loc cum erau (ca în imagine) folosind doar un set limitat de operaţii: shiftări circulare pe linii şi pe coloane. O shiftare presupune deplasarea circulară la dreapta, pe linie sau în jos, pe coloană, cu cel puţin una şi cel mult n+1 poziţii.
Randomel vă roagă să scrieţi un program care, pentru o aranjare aleatorie a brioşelor, să afişeze shiftările circulare posibile care transformă configuraţia dată într-o configuraţie ordonată.
Urmasii lui Moisil, Iasi, 2013
| Problema | shift1 | Operații I/O |
shift1.in/shift1.out
|
|---|---|---|---|
| Limita timp | 1 secunde | Limita memorie |
Total: 64 MB
/
Stivă 8 MB
|
| Id soluție | #37485619 | Utilizator | |
| Fișier | shift1.cpp | Dimensiune | 4.97 KB |
| Data încărcării | 04 Septembrie 2022, 08:59 | Scor/rezultat | 100 puncte |
shift1.cpp: In function 'void za_read()': shift1.cpp:183:28: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] fscanf(fin, "%d\n", &n); ^ shift1.cpp:192:36: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] fscanf(fin, "%d", &aux); ^
| Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
|---|---|---|---|---|---|---|
| 1 | 0 secunde | Randomel e fericit! | 10 | 10 | ||
| 2 | 0.004 secunde | Randomel e fericit! | 10 | 10 | ||
| 3 | 0.004 secunde | Randomel e fericit! | 10 | 10 | ||
| 4 | 0.008 secunde | Randomel e fericit! | 10 | 10 | ||
| 5 | 0.016 secunde | Randomel e fericit! | 10 | 10 | ||
| 6 | 0.02 secunde | Randomel e fericit! | 10 | 10 | ||
| 7 | 0.028 secunde | Randomel e fericit! | 10 | 10 | ||
| 8 | 0.036 secunde | Randomel e fericit! | 10 | 10 | ||
| 9 | 0.048 secunde | Randomel e fericit! | 10 | 10 | ||
| 10 | 0.06 secunde | Randomel e fericit! | 10 | 10 | ||
| Punctaj total | 100 | |||||
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema shift1 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ă.