# PBinfo #4691 – Matrice19 – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

Cerința
Se consideră o matrice pătratică cu n linii şi n coloane şi elemente numere naturale distincte. 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 modifice matricea în felul următor: se determină cele 4 maxime din zonele determinate de cele două diagonale și se interschimbă maximele în sensul acelor de ceas.
Mai exact, elementul maxim din zona nord va ajunge în locul elementului maxim din zona de est, cel din zona de est în locul celui din zona de sud, cel din zona de sud în cea de vest, iar cel din zona de vest în cea de nord.

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
Programul afișează pe ecran matricea modificată, câte o linie a matricei pe o linie a ecranului, elementele fiecărei linii fiind separate prin exact un spaţiu.

Restricții și precizări

1 ≤ n ≤ 50
elementele matricei sunt mai mici decât 10000 și sunt distincte

Exemplu:
Date de intrare

5
22 10 11 16 17 
4 19 1 8 20  
21 12 3 5 6 
18 7 9 24 15 
13 23 25 14 2
Date de ieșire

22 10 11 21 17
4 19 1 8 16
25 12 3 5 6
18 7 9 24 15
13 23 20 14 2
Explicație
Valorile maxime din cele 4 zone sunt 16 (din nord), 20 (din est) 25 (din sud) și 21 (din vest) iar în urma interschimbarii conform cerinței ajung: 16 în zona de est, 20 în cea de sud, 25 în cea de vest și 21 în cea de nord.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int main()
{
    int A[102][102],n,maxN=0,maxE=0,maxS=0,maxV=0,in=0,jn=0,ie=0,je=0,is=0,js=0,iv=0,jv=0;
    cin>>n;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            cin>>A[i][j];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        {
            if(i<j && i+j<n+1 && A[i][j]>maxN) { maxN=A[i][j]; in=i; jn=j; }
            if(i<j && i+j>n+1 && A[i][j]>maxE) { maxE=A[i][j]; ie=i; je=j; }
            if(i>j && i+j>n+1 && A[i][j]>maxS) { maxS=A[i][j]; is=i; js=j; }
            if(i>j && i+j<n+1 && A[i][j]>maxV) { maxV=A[i][j]; iv=i; jv=j; }
        }
    A[ie][je]=maxN;
    A[is][js]=maxE;
    A[iv][jv]=maxS;
    A[in][jn]=maxV;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
            cout<<A[i][j]<<" ";
        cout<<endl;
    }
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/4691)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/4691/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-4691/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
