# PBinfo #635 – Vecini1 – Rezolvare C++

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

## Enunț

Cerința
Se dă o matrice cu n linii și m coloane și elemente numere naturale. Determinați pentru câte dintre elementele matricei toți vecinii au valori diferite între ele.

Date de intrare
Fișierul de intrare vecini1.in conține pe prima linie numerele n m; urmează n linii cu câte m numere naturale separate prin spații – elementele matricei.

Date de ieșire
Fișierul de ieșire vecini1.out va conține pe prima linie numărul C, reprezentând valoarea cerută.

Restricții și precizări

1 ≤ n,m ≤ 100
elementele matricei vor fi mai mici decât 1 000 000
considerăm că un element al matricei poate avea patru vecini: elementele situate pe aceeași linie și pe coloanele adiacente și elementele aflate pe aceeași coloană și liniile adiacente

Exemplu:
vecini1.in

4 5
6 6 4 6 6 
2 2 6 4 6 
1 1 7 3 6 
6 3 6 5 6
vecini1.out

9
Explicație
Cele 9 elemente sunt marcate mai jos:



6
6
 4 
 6 
 6 


2
 2 
 6 
 4 
 6 


1
1
 7 
3
 6 


6
 3 
6
 5 
6

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
ifstream in("vecini1.in");
ofstream out("vecini1.out");
#define cin in
#define cout out
int dlin[] = {0, 0, 1, -1}, dcol[] = {1, -1, 0, 0};
long long int n, m, mat[103][103];
int  main() {
    in >> n >> m;
    for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= m; ++j)
            in >> mat[i][j];
    int p = mat[1][1] ;
    for (int i = 1; i <= n; ++i)
        for(int j = 1; j <= m; ++j)
            if (mat[i][j] > p)
                p = mat[i][j];
    p++;
    for (int i = 0; i <= n + 1; i++) {
        mat[i][0] = p++;
        mat[i][m + 1] = p++;
    } for (int j = 1; j <= m; ++j) {
        mat[0][j] = p++;
        mat[n + 1][j] = p++;
    } long long int contor = 0;
    for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= m; ++j) {
            bool adv = true;
            for (int s = 0; s < 3; s++)
                for (int t = s + 1; t < 4; t++)
                    if (mat[i + dlin[s]][j + dcol[s]] == mat[i + dlin[t]][j + dcol[t]])
                        adv = false;
            if (adv) 
                contor++;
        }
    cout << contor;
    return 0;
}
```

## Resurse

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