# PBinfo #840 – Croco – Rezolvare C++

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

## Enunț

Cerința
Se dă o matrice cu n linii și m coloane și elemente 0 sau 1, care reprezintă harta unui lac, în care 1  înseamnă uscat, iar 0 înseamnă apă. 

Să se plaseze pe fiecare zonă cu uscat un crocodil sau un elefant astfel încât să nu fie două animale din aceeași specie în zone învecinate.

Date de intrare
Fișierul de intrare croco.in conține pe prima linie numerele n m. Următoarele n linii conțin câte m elemente, 0 sau 1, cu semnificația din enunț.

Date de ieșire
Fișierul de ieșire croco.out va conține n linii, fiecare cu câte m caractere din mulțimea {A, C, E}, separate prin câte un spațiu, după cum în zona corespunzătoare a lacului este apa, crocodil sau elefant.

Restricții și precizări

1 ≤ n , m ≤ 100
se acceptă orice soluție corectă

Exemplu:
croco.in

3 5
1 1 1 0 1
1 1 0 1 1
0 1 1 0 1
croco.out

C E C A C
E C A C E
A E C A C

## Cod sursă C++

```cpp
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("croco.in");
ofstream fout("croco.out");
int n,m, a[102][102];
const int dx[]={0 , 0 , 1 , -1}, dy[]={1 , -1 , 0 , 0};
void fill(int i , int j , int v)
{
	a[i][j] = v;
	for(int k = 0 ; k < 4 ; k ++)
		if(a[i+dx[k]][j+dy[k]] == 1)
		{
			if(v == 2)
				fill(i+dx[k] , j+dy[k] , 3);
			else
				fill(i+dx[k] , j+dy[k] , 2);
		}
}
int main(){
	fin >> n >> m;
	for(int i = 1 ; i <= n ; i ++)
		for(int j = 1 ; j <= m ; j ++)
			fin >> a[i][j];
	fin.close();
	//bordare , chiar daca este inutila pentru aceasta problema
	for(int i = 0 ; i <= n + 1 ; i ++)
		a[i][0] = a[i][m+1] = 0;
	for(int j = 0 ; j <= m + 1; j ++)
		a[0][j] = a[n+1][j] = 0;
	for(int i = 1 ; i <= n ; i ++)
		for(int j = 1 ; j <= m ; j ++)
			if(a[i][j] == 1)
				fill(i , j , 2);
	for(int i = 1 ; i <= n ; i ++)
	{
		for(int j = 1 ; j <= m ; j ++)
			switch (a[i][j])
			{
				case 0: fout << "A "; break;
				case 2: fout << "C "; break;
				case 3: fout << "E "; break;
			}
		fout << endl;
	}
	fout.close();
	return 0;
}
```

## Resurse

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