Fireboy & Watergirl

Time limit: 2s Memory limit: 64MB Input: Output:

Cerință

Fireboy și Watergirl se află într-un labirint reprezentat ca o matrice cu NN linii și MM coloane.

Cei doi se mișcă simultan, câte un pas pe rând. La fiecare pas, Fireboy și Watergirl aleg independent câte una dintre cele cinci acțiuni posibile: sus, jos, stânga, dreapta sau stai pe loc. După alegerea acțiunilor, ambele mișcări se aplică în același timp.

Scopul lor este ca Fireboy să se afle la ieșirea sa, iar Watergirl la ieșirea ei, în același moment.

Fiecare celulă a matricei este de unul dintre următoarele tipuri:

Valoare Semnificație
. Celulă liberă
# Perete, de netrecut de ambii jucători
B Poziția inițială a lui Fireboy
G Poziția inițială a lui Watergirl
IB Ieșirea lui Fireboy
IG Ieșirea lui Watergirl
F Foc — Watergirl nu poate intra în această celulă
A Apă — Fireboy nu poate intra în această celulă
Uk Ușă cu numărul kk
Bk Buton cu numărul kk, corespunzător ușii UkUk

O mișcare este validă doar dacă poziția finală a jucătorului se află în interiorul matricei și nu este o celulă interzisă pentru acel jucător. Astfel, niciun jucător nu poate intra într-un perete, Fireboy nu poate intra în apă, iar Watergirl nu poate intra în foc.

Mecanismul ușilor: Un jucător poate ajunge pe celula ușii UkU_k la sfârșitul unui pas numai dacă, după aplicarea simultană a celor două mișcări din acel pas, celălalt jucător se află pe celula butonului corespunzător BkB_k.

Cu alte cuvinte, pentru ca un jucător să fie pe UkU_k la un anumit moment de timp, celălalt jucător trebuie să fie pe BkB_k în același moment de timp. Celălalt jucător poate fie să ajungă pe buton chiar în acel pas, fie să fi fost deja acolo și să aleagă acțiunea să stea pe loc.

Butonul nu rămâne activ după ce jucătorul pleacă de pe el. Ușa UkU_k poate fi folosită doar în momentele în care celălalt jucător se află pe BkB_k.

Condiția de victorie: Jocul se termină cu succes când, la sfârșitul aceluiași pas, Fireboy se află pe IB și Watergirl se află pe IG. Nu este necesar ca cei doi să ajungă la ieșiri simultan — unul poate să ajungă mai devreme și să aștepte acolo, alegând acțiunea să stea pe loc, până când celălalt îl ajunge din urmă.

Cei doi jucători pot ocupa aceeași celulă fără restricții.

Se garantează că există întotdeauna o soluție.

Date de intrare

Prima linie conține două numere întregi NN și MM, dimensiunile matricei. Urmează NN linii, fiecare conținând MM valori separate prin spații, reprezentând tipul fiecărei celule.

Date de ieșire

Pe prima linie, afișați numărul KK de pași. Pe a doua linie, afișați un șir de KK caractere reprezentând mișcările lui Fireboy. Pe a treia linie, afișați un șir de KK caractere reprezentând mișcările lui Watergirl.

Fiecare caracter de mișcare este unul din: U (sus), D (jos), L (stânga), R (dreapta), . (stai pe loc).

Cele două șiruri de mișcări trebuie să aibă aceeași lungime KK. La pasul ii, se execută simultan al ii-lea caracter din șirul lui Fireboy și al ii-lea caracter din șirul lui Watergirl.

Orice soluție validă cu cel mult 21052 \cdot 10^5 pași este acceptată. Nu se cere numărul minim de pași.

Restricții și precizări

  • 1N,M201 \leq N, M \leq 20
  • Există exact un B, un G, un IB și un IG în matrice
  • Fiecare ușă UkU_k are exact un buton corespunzător BkB_k
  • Numărul de perechi ușă–buton este cel mult 44
  • Se garantează că există o soluție

Subtaskuri și punctaje

Subtask Constrângeri suplimentare Punctaj
11 N,M6N, M \leq 6; fără uși, apă sau foc 3030
22 Fără apă sau foc; există exact o pereche ușă–buton 3030
33 Fără constrângeri suplimentare 4040

Exemplu

stdin

6 4
G . B .
. # . B1
U1 # . #
F # A .
B2 # # U2
. IB IG .

stdout

11
LLDDDDUD.DR
RRDRLDDRDDL

Explicație

Fireboy pornește din (0,2)(0, 2), iar Watergirl pornește din (0,0)(0, 0), indexare de la 00.

La fiecare pas, se execută simultan câte o mișcare pentru fiecare dintre cei doi jucători. De exemplu, la un anumit pas, Fireboy poate alege să se deplaseze în jos, iar Watergirl poate alege să stea pe loc.

La pasul 77, adică al 88-lea pas dacă pașii sunt indexați de la 00, Fireboy se află pe butonul B2B_2 de la poziția (4,0)(4, 0), iar Watergirl intră pe ușa U2U_2 de la poziția (4,3)(4, 3) în același moment de timp. Această mutare este validă deoarece, după aplicarea simultană a celor două mișcări, Fireboy se află pe butonul corespunzător ușii.

Ambii ajung la ieșirile lor, IB la poziția (5,1)(5, 1) și IG la poziția (5,2)(5, 2), în același pas.

Log in or sign up to be able to send submissions!