# PBinfo #4680 – MatrixC – Rezolvare C++

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

## Enunț

Se dă o submatrice de numere naturale având n linii și m coloane și de asemenea se dă un număr natural nenul c. Spunem că o submatrice având 2*c+1 linii și 2*c+1 coloane este centrată dacă elementul din centrul submatricei este mai mare sau egal decât toate celelalte elemente din submatrice. Rețineți faptul că fiind vorba de o submatrice care are număr impar de linii și coloane, există mereu un singur element central. De exemplu, dacă c = 1 și matricea este:

1 2 3 2 1
3 7 2 1 5
6 2 4 3 1
5 2 4 4 3
1 1 2 2 3

atunci submatricele 3 x 3 de mai jos sunt centrate:

1 2 3
3 7 2
6 2 4

2 4 3
2 4 4
1 2 2

4 3 1
4 4 3
2 2 3

Cerința
Dându-se matricea și valoarea lui c, să se determine câte submatrice centrate cu 2*c+1 linii și 2*c+1 coloane  sunt.

Date de intrare
Programul citește de la tastatură numerele n m c, iar apoi de pe următoarele n linii se citesc câte m numere naturale reprezentând elementele unei linii.

Date de ieșire
Programul va afișa pe ecran numărul S, reprezentând numărul submatricelor centrate.

Restricții și precizări

3 ≤ n, m ≤ 100, 1 ≤ c < min(n, m) / 2
elementele din matrice sunt numere naturale cuprinse între 0 și 1000

Exemplu:
Intrare

5 5 1
1 2 3 2 1
3 7 2 1 5
6 2 4 3 1
5 2 4 4 3
1 1 2 2 3
Ieșire

3

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int a[105][105], n, m, c;
/// returneaza 1 daca submatricea c x c cu centrul in (x,y) e centrata
int EsteCentrata(int x, int y)
{
    int i, j;
    for (i = x - c; i <= x + c; i++)
        for (j = y - c; j <= y + c; j++)
            if (a[x][y] < a[i][j]) return 0;
    return 1;
}
int main()
{
    int i, j, nrCentrate;
    /// citire
    cin >> n >> m >> c;
    for (i = 1; i <= n; i++)
        for (j = 1; j <= m; j++)
            cin >> a[i][j];
    /// numarare submatrice
    nrCentrate = 0;
    for (i = c + 1; i <= n - c; i++)
        for (j = c + 1; j <= m - c; j++)
            nrCentrate += EsteCentrata(i, j);
    cout << nrCentrate;
    return 0;
}
```

## Resurse

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