Costin are o matrice pătratică cu linii (numerotate de sus în jos de la la ) și coloane (numerotate de la stânga la dreapta de la la ). Inițial toate elementele matricii sunt egale cu . Asupra matricii se va efectua o succesiune de operații, de următoarele tipuri:
- - se adaugă valoarea tuturor elementelor din submatricea cu colțul stânga-sus în și colțul dreapta-jos în . Cu alte cuvinte, toate elementele cu și se adună cu .
- - matricea se va roti de ori cu de grade spre stânga (vezi fig. 1, pentru ).
- - flip orizontal (prima linie devine ultima linie, a doua devine penultima ș.a.m.d. vezi fig. 2)
- - flip vertical (prima coloană va deveni ultima coloană, a doua va deveni penultima, ș.a.m.d. - vezi fig. 3)
Cerință
Scrieți un program care, cunoscând , precum și o succesiune de operații, afișează matricea rezultată în urma efectuării în ordine a operațiilor din succesiune.
Date de intrare
Fișierul de intrare matrix.in
conține pe prima linie numărul , pe a doua linie numărul , iar pe următoarele linii cele operații din succesiune, în forma descrisă în enunț, câte o operație pe o linie.
Date de ieșire
Fișierul de ieșire matrix.out
va conține linii, pe fiecare dintre acestea aflându-se numere separate prin spațiu, ce descriu matricea rezultată după efectuarea operațiilor.
Restricții și precizări
- Toate numerele din fișierul de intrare sunt naturale.
# | Punctaj | Restricții |
---|---|---|
1 | 10 | , există doar operații de tip 1 |
2 | 25 | . |
3 | 17 | există doar operații de tip 1; fără restricții suplimentare |
4 | 24 | există doar operații de tip 1, 3 și 4; fără restricții suplimentare |
5 | 24 | fără restricții suplimentare |
Exemplu
matrix.in
3 5
1 2 2 3 3 2
2 2
1 1 2 3 3 1
3
4
matrix.out
1 1 0
1 3 2
1 3 2