Fişierul intrare/ieşire:aspirator.in, aspirator.outSursăad-hoc
AutorCiprian OprisaAdăugată decypryCiprian Oprisa cypry
Timp execuţie pe test0.5 secLimită de memorie16384 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Aspirator

Aspiratorul-robot aspiră o cameră întreagă, deplasându-se pe baza unui program format din 4 tipuri de instrucţiuni:

  • forward ( f ) urmat de un număr întreg X: deplasează robotul cu X unităţi, în direcţia curentă;
  • back ( b ) urmat de un număr întreg X: deplasează robotul cu X unităţi, în direcţia opusă celei curente;
  • left ( l ) urmat de un număr întreg Y: roteşte robotul cu Y grade spre stânga;
  • right ( r ) urmat de un număr întreg Y: roteşte robotul cu Y grade spre dreapta.

Un program este format dintr-o secvenţă de N instrucţiuni, la finalul căreia robotul revine tot timpul la poziţia iniţială (dar nu neapărat şi la direcţia iniţială).

Mi-a plăcut foarte mult traseul pe care l-a efectuat ultima dată aspiratorul, dar din păcate programul acestuia s-a corupt. Pentru exact o instrucţiune s-a pierdut parametrul, acesta fiind înlocuit cu un caracter '?'. Am nevoie de ajutorul tău să recuperez această valoare.

Date de intrare

Fişierul de intrare aspirator.in conţine pe prima linie numărul de teste T. Fiecare test începe cu o linie care conţine numărul N, dimensiunea programului. Fiecare din următoarele N linii începe cu unul din caracterele f, b, l sau r, urmat de un spaţiu, apoi fie de un număr întreg, fie de un caracter '?'.

Date de ieşire

Fişierul de ieşire aspirator.out va conţine T linii, câte una pentru fiecare test. Fiecare linie va conţine un singur număr întreg, reprezentând parametrul lipsă al instrucţiunii corupte.

Restricţii

  • 2 ≤ N ≤ 1000
  • 1 ≤ X ≤ 300
  • 1 ≤ Y ≤ 89
  • 1 ≤ T ≤ 30

Se garantează că pentru fiecare test, exact o instrucţiune conţine '?' în locul unui număr.

Se garantează că pentru fiecare test, soluţia este unică şi este un număr întreg.

Robotul porneşte tot timpul din centrul camerei, care este un pătrat de latură L=10000, a cărui limite nu sunt niciodată depăşite.

Exemplu

aspirator.inaspirator.out
3
7
f 5
l 70
l 50
f ?
l 60
l 60
f 5
7
f 5
l 70
l ?
f 5
l 60
l 60
f 5
14
r 55
b 1
r 45
f 4
r 57
f 8
l 54
l 55
l ?
f 8
l 57
f 4
l 45
b 1
5
50
71

Explicaţie

În primele două teste din fişier, traseul aspiratorului este cel din figura de mai sus. Aspiratorul porneşte din stânga-jos, este orientat spre dreapta şi efectuează următorii paşi.

  1. înainte cu 5 unităţi
  2. rotire la stânga cu 70 de grade
  3. rotire la stânga cu 50 de grade
  4. înainte cu 5 unităţi
  5. rotire la stânga cu 60 de grade
  6. rotire la stânga cu 60 de grade
  7. înainte cu 5 unităţi

Observaţi că traseul aspiratorului descrie un triunghi echilateral cu latura 5.

În primul test, instrucţiunea coruptă este forward, de la pasul (4). Răspunsul aşteptat este distanţa cu care ne deplasăm, adică 5.

În al doilea test, instrucţiunea coruptă este left, de la pasul (3). Răspunsul aşteptat este unghiul cu care ne rotim (în grade), adică 50.

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?