PROBLEMA 1 – SOKOBAN Sokoban este un binecunoscut joc de strategie în care un muncitor trebuie să împingă până la locurile lor finale mai multe lăzi, într-un depozit virtual. Deoarece în situaţia în care există un număr arbitrar de lăzi găsirea unei soluţii poate fi un lucru foarte dificil, vom considera o versiune simplificată a jocului, în care există o singură ladă sau nici o ladă. În cazul în care în depozit nu există nici o ladă muncitorul trebuie să ajungă el însuşi cu număr minim de mutări la un anumit loc iar dacă în depozit există o ladă, atunci aceasta trebuie împinsă până ajunge la locul ei final cu un număr minim de mutări. Depozitul este reprezentat ca o matrice pătratică cu n linii şi n coloane. Obstacolelor din depozit (ziduri- lor) le corespund valori 1 în matrice iar poziţiilor libere le corespund valori 0. Nu este permis ca muncitorul sau lada să ajungă în poziţia unui obstacol sau în afara depozitului. Muncitorul se poate deplasa în patru direcţii, ce corespund celor patru puncte cardinale; lada poate fi împinsă doar dacă muncitorul are contact nemijlocit cu ea pe una din cele patru laturi. Se cere să se scrie un program care, cunoscând tipul de problemă (cu o ladă sau fără nici o ladă), să determine numărul minim de mutări în care muncitorul sau lada ajung la locul lor final. Date de intrare Datele de intrare se citesc din fişierul SOKOBAN.IN, care are următoarea structură: Prima linie conţine un număr tip, care poate fi 0 sau 1, reprezentând numărul de lăzi. Dacă tip este 0, atunci a doua linie conţine patru numere naturale l1, c1, l2, c2 care reprezintă, în ordine, coordonatele linie-coloană ale locului de pornire şi respectiv locului final pentru muncitor, iar dacă tip este 1, atunci a doua linie conţine şase numere naturale l1, c1, l2, c2, l3, c3 care reprezintă, în ordine, coordonatele linie-coloană ale muncitorului, ale locului iniţial al lăzii şi respectiv ale locului final al lăzii. A treia linie conţine un număr natural n reprezentând dimensiunea depozitului, iar următoarele n linii conţin câte n valori 0 sau 1, separate prin câte un spaţiu, reprezentând configuraţia de locuri libere şi ocupate. Date de ieşire Fişierul de ieşire SOKOBAN.OUT va conţine pe prima linie un singur număr natural reprezentând numărul minim de mutări în care muncitorul sau lada, după caz, vor ajunge la locurile lor finale. Restricţii şi precizări 3 ≤ n ≤ 10 numerotarea liniilor şi coloanelor în matricea ce reprezintă depozitul începe de la zero, deci 0 ≤ l1, c1, l2, c2, l3, c3 ≤ n-1 şi (l1,c1)≠(l2,c2)≠(l3,c3) datele de test vor fi astfel alese încât întotdeauna să existe soluţie; datele de intrare sunt corecte Exemple SOKOBAN.IN SOKOBAN.OUT Explicaţii 0 10 O posibilă succesiune de comenzi de deplasare este: 1333 NVVVSSSEEE 5 00000 00100 01010 00001 00000 1 23 O posibilă succesiune de comenzi de deplasare este: 552340 VVNNNEENNVVSSSSESVVVSVN 7 0000000 0010100 0000000 1110111 0000000 0000000 0000000 Timp maxim de execuţie/test : 1 secundă