0781 - Zone 1

De la Universitas MediaWiki

Cerinţa

Se dă o matrice cu n linii şi n coloane şi elemente numere naturale. Cele două diagonale delimitează în matrice 4 zone: NORD – elementele situate deasupra diagonalei principale şi deasupra celei secundare EST – elementele situate deasupra diagonalei principale şi sub cea secundară SUD – elementele situate sub diagonala principală şi sub cea secundară VEST – elementele situate sub diagonala principală şi deasupra celei secundare Să se afişeze, în ordine crescătoare, sumele elementelor din cele patru zone.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n*n numere naturale, separate prin spaţii, reprezentând elementele matricei, linie cu linie.

Date de ieşire

Dacă datele sunt introduse corect,pe ecran se va afișa :"Datele sunt introduse corect.",apoi pe un rând nou numerele S1 S2 S3 S4, separate printr-un spaţiu, în ordine crescătoare.În cazul contrar,se va afișa pe ecran "Datele nu corespund restricțiilor impuse.".

Restricții și precizări

  • 1 ⩽ n ⩽ 100
  • elementele matricei vor fi mai mici decât 1.000.000

Exemplu

Date de intrare
5
3 1 8 5 4
7 8 5 1 2
2 2 6 7 3
9 8 1 3 6
7 5 3 1 7
Date de ieșire
Datele sunt introduse corect.
10 18 19 20

Rezolvare

#Functia verifică dacă datele introduse respectă restricțiile impuse.
def validare_date(n, matrice):

    for i in range(n):
        for j in range(n):
            if matrice[i][j] >= 1000:
                return False
    return True

#Funcție care calculează cele patru sume cerute în problemă
def rezolvare(n, matrice):
    S1, S2, S3, S4 = 0, 0, 0, 0

    for i in range(n):
        for j in range(n):
            if i < j and i + j < n:
                S1 += matrice[i][j]
            elif i < j and i + j > n - 1:
                if i + j == n - 1:
                    continue
                S2 += matrice[i][j]
            elif i > j and i + j > n - 1 and j != n - 1 - i:
                S3 += matrice[i][j]
            elif i > j and i + j < n and j != n - 1 - i:
                S4 += matrice[i][j]

    return sorted([S1, S2, S3, S4])

if __name__ == '__main__':
    # citirea datelor de intrare
    n = int(input())
    matrice = []
    for i in range(n):
        linie = input().split()
        linie = [int(x) for x in linie]
        matrice.append(linie)

    # validarea datelor de intrare
    if validare_date(n, matrice):
        print("\nDatele sunt introduse corect.\n")
        # rezolvarea problemei
        rezultat = rezolvare(n, matrice)

        # afisarea rezultatului
        for s in rezultat:
            print(s, end=' ')
    else:
        print('Datele nu corespund restrictiilor impuse.')