Se dau şi două numere naturale şi o matrice cu linii (numerotate de la la ) şi coloane (numerotate de la la ) având elementele numere întregi în intervalul închis . Asupra acestei matrice se pot efectua mai multe operaţii de ştergere a unor linii, de ordonare a elementelor aflate pe anumite linii sau de adăugare a unor noi linii la sfârşitul matricei. Fiecare dintre aceste operaţii este codificată printr-o comandă având următoarea sintaxă:
Ştergerea este precizată printr-o linie de forma:
Comanda precizează că se şterg din matrice acele linii pentru care sunt îndeplinite simultan următoarele condiţii:
- este în relaţia faţă de
- este în relaţia faţă de
- este în relaţia faţă de
unde , , , pot fi unul dintre operatorii <
(mai mic), >
(mai mare), !
(diferit), =
(egal).
De exemplu comanda: precizează că se şterg liniile în cazul în care şi .
După ştergerea tuturor liniilor precizate se va proceda la renumerotarea liniilor din matrice, iar dimensiunea matricii se va modifica.
Ordonarea este precizată printr-o linie de forma cu semnificaţia că liniile sunt sortate după valoarea din coloana , dacă pentru două linii valoarea din coloana coincide se vor ordona după coloana , apoi după coloana etc. Sortarea după o anumită coloană se face crescător dacă este C
respectiv descrescător dacă este D
. Dacă două linii conţin valori identice în toate cele coloane, se va păstra ordinea relativă în care apar ele în tabela iniţială.
Adăugarea este precizată printr-o linie de forma cu semnificaţia că se adaugă la sfârşitul matricei, după ultima sa linie, o linie nouă, elementele noii linii având pe rând, de la stânga la dreapta, valorile .
Cerinţă
Scrieţi un program care citeşte elementele matricei iniţiale, apoi citeşte un şir de comenzi şi determină matricea rezultată după efectuarea operaţiilor precizate prin comenzile respective în ordinea în care acestea sunt date.
Date de intrare
Fişierul de intrare matrice.in
conţine pe prima linie numerele naturale şi separate printr-un spaţiu. Pe fiecare dintre următoarele linii se află câte numere întregi, reprezentând elementele matricei. Elementele de pe aceeaşi linie sunt separate prin câte un spaţiu.
Următoarea linie a fişierului de intrare conţine un singur număr natural , reprezentând numărul de operaţii ce se aplică matricei. Următoarele linii ale matricei precizează fiecare câte o comandă care se aplică matricei, respectând sintaxa şi precizările din enunţ.
Date de ieșire
Fişierul de ieşire matrice.out
va conţine pe prima linie un număr natural reprezentând numărul de linii al matricei finale. Pe fiecare dintre următoarele linii se află câte numere întregi, reprezentând elementele matricei finale. Elementele de pe aceeaşi linie sunt separate prin câte un spaţiu.
Restricții și precizări
- Niciuna dintre matricele intermediare nu au mai mult de de linii
- Numărul maxim de condiţii pentru orice comandă de ştergere sau de ordonare este de ()
- Toate comenzile din fişierul de intrare sunt corecte atât din punct de vedere sintactic dar şi din punct de vedere logic, adică nu se cere de exemplu sortarea sau ştergerea unor linii din afara matricei.
Exemplu
matrice.in
10 4
5 1 6 3
4 2 3 7
4 2 3 2
2 8 1 3
4 2 1 6
1 3 2 1
9 7 5 1
9 7 3 8
3 8 2 6
6 7 1 3
8
O 2 5 1 3 C
O 7 10 1 2 C
S 5 9 1 1 < 4
A 7 3 5 1
A 9 2 1 6
O 2 7 3 2 C 1 D 4 D
O 1 11 1 3 C
S 1 11 2 1 > 4 3 ! 5
matrice.out
7
4 2 1 6
2 8 1 3
3 8 2 6
4 2 3 7
4 2 3 2
9 7 5 1
7 3 5 1