#150
shift1
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 | #37167105 | Utilizator | |
Fișier | shift1.cpp | Dimensiune | 4.91 KB |
Data încărcării | 12 Iulie 2022, 16:39 | Scor / rezultat | Eroare de compilare |
shift1.cpp:8:7: error: 'NMAX' was not declared in this scope int a[NMAX][NMAX]; ^ shift1.cpp:8:13: error: 'NMAX' was not declared in this scope int a[NMAX][NMAX]; ^ shift1.cpp:9:11: error: 'NMAX' was not declared in this scope pos_str b[NMAX * NMAX]; ^ shift1.cpp:9:18: error: 'NMAX' was not declared in this scope pos_str b[NMAX * NMAX]; ^ shift1.cpp:18:1: error: 'multimap' does not name a type multimap<int, pos_str> zeroes; ^ shift1.cpp: In function 'void add_zero(int, int)': shift1.cpp:27:5: error: 'zeroes' was not declared in this scope zeroes.insert(make_pair(key, aux)); ^ shift1.cpp: In function 'void remove_zero(int, int)': shift1.cpp:34:5: error: 'zeroes' was not declared in this scope zeroes.erase(key); ^ shift1.cpp: In function 'void swap_two(int, pos_str, pos_str)': shift1.cpp:96:9: error: 'b' was not declared in this scope b[val] = two; ^ shift1.cpp:98:5: error: 'a' was not declared in this scope a[two.x][two.y] = val; ^ shift1.cpp: In function 'void swap_values(pos_str, pos_str, pos_str)': shift1.cpp:104:17: error: 'a' was not declared in this scope int val_x = a[x.x][x.y]; ^ shift1.cpp: In function 'void move_zero_to(int, int)': shift1.cpp:172:5: error: 'multimap' was not declared in this scope multimap<int, pos_str>::iterator it = zeroes.begin(); ^ shift1.cpp:172:14: error: expected primary-expression before 'int' multimap<int, pos_str>::iterator it = zeroes.begin(); ^ shift1.cpp:172:14: error: expected ';' before 'int' shift1.cpp:173:24: error: 'it' was not declared in this scope move_piece_from_to(it->second.x, it->second.y, i, j); ^ shift1.cpp: In function 'void za_read()': shift1.cpp:190:13: error: 'a' was not declared in this scope a[i][j] = aux; ^ shift1.cpp:192:13: error: 'b' was not declared in this scope b[aux].x = i; ^ shift1.cpp: In function 'int main()': shift1.cpp:228:21: error: 'a' was not declared in this scope if (a[i][j] != 0) ^ shift1.cpp:238:17: error: 'a' was not declared in this scope if (a[i][j] != should_be) ^ shift1.cpp:240:36: error: 'b' was not declared in this scope move_piece_from_to(b[should_be].x, b[should_be].y, i, j); ^ shift1.cpp: In function 'void za_read()': shift1.cpp:179: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:188:36: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] fscanf(fin, "%d", &aux); ^
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ă.