Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2016-09-24 05:50:26.
Revizia anterioară   Revizia următoare  

 

Fişierul intrare/ieşire:sokoban.in, sokoban.outSursăFinala ONIS 2016
AutorMihai CalanceaAdăugată deandreiiiiPopa Andrei andreiiii
Timp execuţie pe test0.5 secLimită de memorie131072 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Sokoban

Este posibil ca unii din voi să ştiţi jocul Sokoban. Acesta are loc pe o matrice cu N linii şi M coloane. Unele celule sunt libere (notate cu '.'), iar altele sunt blocate (notate cu '#'). Exact o celulă (notată cu 'S') este ocupată de jucător. Exact o celulă (notată cu 'X') este ocupată de o cutie. Exact o celulă (notată cu 'E') este desemnată celula destinaţie. Scopul jucătorului este să împingă cutia până la celula destinaţie. Jucătorul poate împinge cutia într-o anumită direcţie dacă se află într-o celulă alăturată cutiei (pe cele 4 direcţii NSVE) iar poziţia sa relativ la cutie este opusă direcţiei în care acesta doreşte să împingă cutia. Spre exemplu, dacă el se află exact în stânga cutiei, o poate împinge la dreapta. Pentru ca mişcarea să se poată realiza, trebuie ca celula în care împingem cutia să fie liberă. Cutia este solidă, iar jucătorul nu poate trece printr-o celulă dacă aceasta este ocupată de cutie.

Dându-se o instanţă a jocului, voi trebuie să decideţi dacă aceasta are soluţie, i.e dacă este posibil ca jucătorul să împingă cutia din poziţia ei de start până la celula destinaţie.

Date de intrare

Fişierul de intrare sokoban.in va conţine pe prima sa linie numărul de teste, T. Fiecare test respectă următoarea structură: prima linie conţine valorile N şi M, reprezentând numărul de linii, respectiv numărul de coloane al matricei. Următoarele N linii conţin câte M caractere, care pot fi '.', '#', 'X', 'S', sau 'E'.

Date de ieşire

În fişierul de ieşire sokoban.out se vor afla T linii, fiecare conţinând cuvântul YES sau NO.

Restricţii

  • Suma de max(N, M) pentru fiecare test este mai mica sau egala cu 2000.

Exemplu

sokoban.insokoban.out
1
10 12
.##########.
.#........#.
.#..X..S..##
.#.#..####.#
.###..E....#
##.#....#.##
#..##.###.##
#.........##
#..#..##...#
############
YES
Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?