Grade 10 · Two-dimensional arrays (matrices)Citește în română
The four zones of a square matrix
Original: Cele patru zone ale matricei pătratice
The idea
The two diagonals split a square matrix into four zones (without the elements on the diagonals). With indices from 1: North: i < j and i + j < n + 1 (above both diagonals); South: i > j and i + j > n + 1 (below both diagonals); East: i < j and i + j > n + 1 (above the main, below the secondary); West: i > j and i + j < n + 1 (below the main, above the secondary). The sum of the elements in each zone is printed.
Original description (Romanian)
Cele două diagonale împart o matrice pătratică în patru zone (fără elementele de pe diagonale). Cu indici de la 1: Nord: i < j și i + j < n + 1 (deasupra ambelor diagonale); Sud: i > j și i + j > n + 1 (sub ambele diagonale); Est: i < j și i + j > n + 1 (deasupra principalei, sub secundară); Vest: i > j și i + j < n + 1 (sub principală, deasupra secundarei). Se afișează suma elementelor din fiecare zonă.
- Complexity
- O(n * n)
- Grade
- Grade 10 (Clasa a X-a)
Examples
Input
5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Expected output
N 17 S 87 E 59 V 45
The code
Comments are in Romanian, as in the original collection. Edit freely: you can reset at any time.
/*
* Titlu: Cele patru zone ale matricei pătratice
* Clasa: 10
* Capitol: Tablouri bidimensionale (matrice)
* Descriere: Cele două diagonale împart o matrice pătratică în patru zone (fără
* elementele de pe diagonale). Cu indici de la 1:
* Nord: i < j și i + j < n + 1 (deasupra ambelor diagonale);
* Sud: i > j și i + j > n + 1 (sub ambele diagonale);
* Est: i < j și i + j > n + 1 (deasupra principalei, sub secundară);
* Vest: i > j și i + j < n + 1 (sub principală, deasupra secundarei).
* Se afișează suma elementelor din fiecare zonă.
* Complexitate: O(n * n)
*
* Exemplu
* Intrare:
* 5
* 1 2 3 4 5
* 6 7 8 9 10
* 11 12 13 14 15
* 16 17 18 19 20
* 21 22 23 24 25
* Ieșire:
* N 17
* S 87
* E 59
* V 45
*/
#include <iostream>
using namespace std;
int a[101][101];
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
cin >> a[i][j];
int nord = 0, sud = 0, est = 0, vest = 0;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
if (i < j && i + j < n + 1)
nord += a[i][j];
else if (i > j && i + j > n + 1)
sud += a[i][j];
else if (i < j && i + j > n + 1)
est += a[i][j];
else if (i > j && i + j < n + 1)
vest += a[i][j];
}
}
cout << "N " << nord << '\n';
cout << "S " << sud << '\n';
cout << "E " << est << '\n';
cout << "V " << vest << '\n';
return 0;
}
Runs on a real g++ (C++17, -O2) through Compiler Explorer. Keep runs short; there's a time limit.