Cod sursa(job #92192)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 14 octombrie 2007 14:00:50
Problema Castel Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<stdio.h>
int a[16000],n,m,k,cheie[10000],camera[10000],nr=0;
const short l[5]={0,0,1,-1};
const short c[5]={1,-1,0,0};
void citire()
{
freopen ("castel.in","r",stdin);
scanf ("%d",&n);
scanf ("%d",&m);
scanf ("%d",&k);
for (int i=1;i<=n*m;i++)
	scanf ("%d",&a[i]);
fclose(stdin);
  cheie[a[k]]=1;
  camera[k]=1;
}
void numarere(){
  short ok=0;
  while (ok==0)
  {
    ok=1;
    for (int i=1;i<n*m;i++)
	if (camera[i]==1)
	{
	  if (cheie[a[i+1]]==1&&camera[i+1]==0){
	      camera[i+1]=1;
	      ok=0;
	      cheie[i+1]=1;
	      }

	  if (cheie[a[i-1]]==1&&camera[i-1]==0){
	     camera[i-1]=1;
	     ok=0;
	     cheie[i-1]=1;
	     }
	  if (cheie[a[i+m]]==1&&camera[i+m]==0){
	     ok=0;
	     camera[i+m]=1;
	     cheie[i+m]=1;
	     }

	  if (i>m&&cheie[a[i-m]]==1&&camera[i-m]==0){
	     ok=0;
	     camera[i-m]=1;
	     cheie[i-m]=1;
	     }
	}
  }
}
int main(){
citire();
freopen("castel.out","w",stdout);
numarere();
long S=0;
for (int i=1;i<=n*m;i++)
    S+=camera[i];
printf("%ld",S);
printf("\n");
fclose(stdout);
return 0;
}