Cod sursa(job #1159317)

Utilizator valentinpielePiele Valentin valentinpiele Data 29 martie 2014 15:03:17
Problema Castel Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>
#include <deque>
#include <vector>
#define max 151
using namespace std;

ifstream f("castel.in");
ofstream g("castel.out");

int dx[]={0, 0, 0, 1, -1};
int dy[]={0, 1, -1, 0, 0};
int n, m, k;
//struct punct {int x, int y};
//deque <punct> coada;
int coada[2][max*max+1];
int deschid[max][max]={{0}};
int camere[max*max+1]={0};
int camera;
int v[max][max];
int linie, coloana;

int main ()
{
	int i, j, ok, p, u;
	
	f>>n>>m>>k;
	for(i=1;i<=n;i++) for(j=1;j<=m;j++) f>>v[i][j];
	
	if(k%m==0) { linie=k/m; coloana=m; }
	else { linie=k/m+1; coloana=k%m; }
	//coada.push_back({linie,coloana});
	p=u=1;
	coada[0][p]=linie;
	coada[1][p]=coloana;
	ok=1;
	deschid[linie][coloana]=1;
	camere[k]=1;
	
	while(ok==1)
	{
		ok=0;
		p=1;
		while(p<=u)
		{
			for(i=1;i<=4;i++)
			{
				linie=coada[0][p]+dx[i];
				coloana=coada[1][p]+dy[i];
				if(linie>=1 && coloana>=1 && linie<=n && coloana<=m)
				{
					camera=(linie-1)*m+coloana;
					if(deschid[linie][coloana]==0 && camere[v[linie][coloana]])
					{
						ok=1;
						u++;
						coada[0][u]=linie;
						coada[1][u]=coloana;
						deschid[linie][coloana]=1;
						camere[camera]=1;
					}
				}
			}
			p++;
		}
	}
	g<<u;
	return 0;
}