Matrix

Time limit: 0.7s Memory limit: 256MB Input: matrix.in Output: matrix.out

Costin are o matrice pătratică AA cu NN linii (numerotate de sus în jos de la 11 la NN) și NN coloane (numerotate de la stânga la dreapta de la 11 la NN). Inițial toate elementele matricii sunt egale cu 00. Asupra matricii AA se va efectua o succesiune de MM operații, de următoarele tipuri:

  • 1 i1 j1 i2 j2 X1 \ i_1 \ j_1 \ i_2 \ j_2 \ X - se adaugă valoarea XX tuturor elementelor din submatricea cu colțul stânga-sus în (i1,j1)(i_1, j_1) și colțul dreapta-jos în (i2,j2)(i_2, j_2). Cu alte cuvinte, toate elementele Ai,jA_{i,j} cu i1ii2i_1 \leq i \leq i_2 și j1jj2j_1 \leq j \leq j_2 se adună cu XX.
  • 2 K2 \ K - matricea se va roti de KK ori cu 9090 de grade spre stânga (vezi fig. 1, pentru K=1K = 1).
  • 33 - flip orizontal (prima linie devine ultima linie, a doua devine penultima ș.a.m.d. vezi fig. 2)
  • 44 - 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 NN, precum și o succesiune de MM 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 NN, pe a doua linie numărul MM, iar pe următoarele MM linii cele MM 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 NN linii, pe fiecare dintre acestea aflându-se NN numere separate prin spațiu, ce descriu matricea rezultată după efectuarea operațiilor.

Restricții și precizări

  • 1N1 5001 \leq N \leq 1 \ 500
  • 1M100 0001 \leq M \leq 100 \ 000
  • 1X,K1 000 000 0001 \leq X, K \leq 1 \ 000 \ 000 \ 000
  • Toate numerele din fișierul de intrare sunt naturale.
# Punctaj Restricții
1 10 1N,M2001 \leq N, M ≤ 200, există doar operații de tip 1
2 25 1N,M2001 \leq N, M \leq 200.
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

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