Concursul "Urmasii lui Moisil" 2002 Clasa a IX-a |
Problema 1- Robotei
Pe o platforma dreptunghiulara situata în Oceanul Atlantic, în perioada marilor furtuni lucreaza numai roboti. Harta platformei este o matrice cu M+1 linii si N+1 coloane, numerotate de la 0 la M, respectiv de la 0 la N. Pe platforma exista R roboti, numerotati distinct de la 1 la R. Pentru fiecare robot, se cunoaste pozitia initiala si o secventa de comenzi, care determina modul de deplasare a robotului pe platforma. Pozitia unui robot este specificata printr-o pereche de coordonate întregi de pe harta si o orientare (N - nord, E - est, S - sud, V - vest ).
Directia NORD corespunde deplasarii din punctul (x, y) în punctul (x,y+1).
O secventa de comenzi este un sir de litere S, D, I, cu semnificatia:
S - stânga: robotul se întoarce la stânga cu 90° si ramâne
în acelasi punct;
D - dreapta: robotul se întoarce la dreapta cu 90° si ramâne
în acelasi punct;
I - înainte: robotul se deplaseaza cu un punct în directia în
care este orientat, pastrându-si orientarea.
Un robot care se deplaseaza în afara platformei este pierdut pentru totdeauna.
Totusi, un robot pierdut lasa un mesaj care va împiedica alti roboti sa
cada de pe platforma din acelasi punct. Mesajul este lasat în ultimul
punct ocupat de robot înainte de disparitie. O comanda de deplasare în
afara platformei din acel punct va fi ignorata de ceilalti roboti. Robotii lucreaza
secvential, adica robotii urca pe platforma pe rând, conform numerelor
lor de ordine, se deplaseaza în pozitia finala, apoi coboara de pe platforma.
Cerinta
Scrieti un program care determina pozitia finala de pe platforma a fiecarui
robot.
Date de intrare
Fisierul de intrare ROBO.IN contine:
-- pe prima linie coordonatele M, N ale coltului dreapta-sus al hartii (coordonatele
coltului jos-stânga sunt 0, 0);
- pe a doua linie R, numarul de roboti;
- liniile urmatoare contin pozitiile si secventele de comenzi pentru roboti
(câte doua linii pentru un robot). O pozitie este specificata pe o linie
prin doua valori întregi (coordonatele robotului pe harta) si un caracter
(reprezentând orientarea robotului), separate prin câte un spatiu.
Pe urmatoarea linie se afla secventa de comenzi corespunzatoare.
Date de iesire
Pentru fiecare robot se va scrie pe o linie separata în fisierul de iesire
ROBO.OUT pozitia finala. Daca un robot cade de pe platforma, se va scrie si
mesajul PIERDUT dupa ultima lui pozitie pe platforma. Pe fiecare linie datele
sunt separate prin câte un spatiu.
Restrictii
- Toate pozitiile initiale sunt interioare platformei.
- Valoarea maxima pentru orice coordonata este 50.
- Orice secventa de comenzi are cel mult 100 de caractere.
- Numarul maxim de roboti este 100.
Exemplu
ROBO.IN | ROBO.OUT |
5 3 3 1 E DIDIDIDI 3 2 N IDDISSIIDDISS 0 3 V SSIIISISIS |
1 1 E 3 3 N PIERDUT 2 3 S |
Timp maxim de executie: 1 secunda/test