3093 - Diff2dArrays
Cerinta
Se dă o matrice A, formată din N linii și N coloane. Asupra unei submatrice cu colțul din stânga-sus aflat pe linia l1 și coloana c1, și colțul din dreapta-jos aflat pe linia l2 și coloana c2, se poate efectua operație de mărire a elementelor cu un număr întreg v. Afișați matricea A, după efectuarea a Q astfel de operații
Date de intrare
pe prima linie se află variabila N, reprezentând numărul de linii și coloane.
pe următoarele N linii, câte N numere întregi, reprezentând elementele matricii.
pe cea de-a N + 1 se află variabila Q, reprezentând numărul de operații ce trebuie efectuate.
pe următoarele Q linii, 5 numere : l1, c1, l2, c2, v, reprezentând linia și coloana colțului din stânga-sus, respectiv linia și coloana colțului din dreapta-jos al unei submatrici, căreia îi vor fi mărite elementele cu numărul întreg v.
Date de iesire
Programul va afișa pe ecran matricea după aplicarea tuturor celor Q operații de mărire.
Restrictii si precizari
1 ≤ N ≤ 500
1 ≤ Q ≤ 200.000
1 ≤ l1 ≤ l2 ≤ N
1 ≤ c1 ≤ c2 ≤ N
-1.000 ≤ v ≤ 1.000
Elementele matricii A vor avea valori cuprinse între [-10.000, 10.000]
Exemplu
Intrare
4
3 6 3 3
0 5 2 10
-4 4 10 -1
4 -1 8 3
2
1 1 4 2 10
1 1 4 4 -5
Iesire
8 11 -2 -2
5 10 -3 5
1 9 5 -6
9 4 3 -2
Rezolvare
def mareste_submatrice(matrice, l1, c1, l2, c2, v):
for i in range(l1 - 1, l2):
for j in range(c1 - 1, c2):
matrice[i][j] += v
return matrice
def print_matrice(matrice):
for rand in matrice:
print(*rand)
def aplicare_operatii():
N = int(input())
matrice = [list(map(int, input().split())) for _ in range(N)]
Q = int(input())
for _ in range(Q):
l1, c1, l2, c2, v = map(int, input().split())
matrice = mareste_submatrice(matrice, l1, c1, l2, c2, v)
print_matrice(matrice)
aplicare_operatii()