3903 - Diff2dArrays

De la Universitas MediaWiki

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()