Revizia anterioară Revizia următoare
Fişierul intrare/ieşire: | snake.in, snake.out | Sursă | FMI No Stress 8 |
Autor | Mihai Calancea | Adăugată de | |
Timp execuţie pe test | 0.5 sec | Limită de memorie | 262144 kbytes |
Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Snake
Într-o matrice cu obstacole există un şarpe de lungime impară Len. Fiecare poziţie a corpului şarpelui acoperă o celulă a matricii, poziţii consecutive ale şarpelui acoperă celule adiacente în matrice, iar oricare două poziţii diferite ale şarpelui acoperă celule diferite. Şarpele nu acoperă obstacole. Din păcate, un muritor obişnuit nu poate vedea şarpele în totalitate, el vede doar poziţiile impare din corpul lui, poziţiile pare fiind văzute ca celule obişnuite ale matricii, fără obstacol.
Matricea este dată în fişierul de intrare având ca fiecare element una din următoarele valori:
- -1 - obstacol
- 0 - poziţie liberă sau ocupată de o bucată pară din şarpe
- x cu 1 ≤ x ≤ Len - poziţie ocupată de a x-a bucată din şarpe
Se cere să se reconstruiască o amplasare validă a şarpelui pe matrice. Dacă sunt mai multe solutii, se poate afişa oricare dintre ele. Se garantează că există cel putin o soluţie.
Date de intrare
Pe prima linie se găsesc numerele N, M şi Len, reprezentând numărul de linii, numarul de coloane ale matricii, respectiv lungimea şarpelui.
Pe următoarele N linii se află câte M numere care descriu matricea ca în cerinţă.
Toate numerele impare de la 1 la Len apar exact o singură dată. Distanţa Manhattan dintre oricare două poziţii impare consecutive ale şarpelui este 2.
Date de ieşire
Se va găsi matricea cu amplasarea şarpelui descrisă în totalitate.
Restricţii
- 1 ≤ N, M ≤ 100
- Pentru 20 de puncte, 1 ≤ N * M ≤ 20
- Se garantează că există cel puţin o soluţie
Exemplu
snake.in | snake.out |
---|---|
4 4 7 -1 3 0 0 1 0 5 0 0 0 0 0 0 0 7 0 | -1 3 4 0 1 2 5 0 0 0 6 0 0 0 7 0 |