#5019
Se dă o rețea de N * M calculatoare, dispuse sub forma unei matrici cu N linii și M coloane, numerotate începând cu 1, între care se pot transfera informații.
Fiecare calculator funcțional are asociat un cod, număr natural. Calculatoarele defecte sunt marcate cu -1 și nu pot participa la transferul de informație.
Transferul de informație între două calculatoare funcționale se face direct, dacă acestea sunt vecine, sau indirect, prin intermediul altor calculatoare funcționale. Două calculatoare sunt vecine dacă se află pe aceeași linie și coloane adiacente sau pe aceeași coloană și linii adiacente, adică calculatorul de la poziția (i, j) este vecin cu cel de la pozițiile: (i + 1, j), (i - 1, j), (i, j + 1) sau (i, j - 1).
Costul transferului de informație între două calculatoare vecine funcționale este 0, dacă cele două coduri diferă prin cel mult un bit în reprezentarea binară, respectiv 1, în caz contrar. Costul transferului de informație între două calculatoare care nu sunt vecine este suma costurilor transferurilor directe intermediare.
Scrieți un program care să determine costul minim necesar pentru transferul informației de la calculatorul de pe poziția (1, 1) la cel de pe poziția (N, M).
Concursul Interjudețean de Matematică și Informatică SEVER-AUREL GROZE 2026
| Problema | bitmove | Operații I/O |
bitmove.in/bitmove.out
|
|---|---|---|---|
| Limita timp | 0.5 secunde | Limita memorie |
Total: 64 MB
/
Stivă 8 MB
|
| Id soluție | #64646653 | Utilizator | |
| Fișier | bitmove.cpp | Dimensiune | 2.24 KB |
| Data încărcării | 20 Mai 2026, 11:48 | Scor/rezultat | 100 puncte |
bitmove.cpp: In function ‘int main()’: bitmove.cpp:47:12: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 47 | freopen("bitmove.in", "r", stdin); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ bitmove.cpp:48:12: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 48 | freopen("bitmove.out", "w", stdout); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
|---|---|---|---|---|---|---|
| 1 | 0.002 secunde | OK. | 4 | 4 | ||
| 2 | 0.003 secunde | OK. | 4 | 4 | ||
| 3 | 0.003 secunde | OK. | 4 | 4 | ||
| 4 | 0.002 secunde | OK. | 4 | 4 | ||
| 5 | 0.018 secunde | OK. | 5 | 5 | ||
| 6 | 0.027 secunde | OK. | 9 | 9 | ||
| 7 | 0.026 secunde | OK. | 8 | 8 | ||
| 8 | 0.038 secunde | OK. | 12 | 12 | ||
| 9 | 0.014 secunde | OK. | 10 | 10 | ||
| 10 | 0.038 secunde | OK. | 10 | 10 | ||
| 11 | 0.03 secunde | OK. | 4 | 4 | ||
| 12 | 0.04 secunde | OK. | 3 | 3 | ||
| 13 | 0.057 secunde | OK. | 3 | 3 | ||
| 14 | 0.057 secunde | OK. | 5 | 5 | ||
| 15 | 0.096 secunde | OK. | 4 | 4 | ||
| 16 | 0.1 secunde | OK. | 5 | 5 | ||
| 17 | 0.156 secunde | OK. | 6 | 6 | ||
| Punctaj total | 100 | |||||
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema bitmove 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ă.