Cod sursa(job #272571)

Utilizator PopaStefanPopa Stefan PopaStefan Data 7 martie 2009 14:16:18
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.57 kb
#include<fstream.h>
#include<values.h>

ifstream fin("rj.in");
ofstream fout("rj.out");

char a[101][101];
int rom[101][101];
int jul[101][101];
int n,m,x,y;
int l[8]={-1,-1,-1,0,1,1,1,0};
int c[8]={-1,0,1,1,1,0,-1,-1};

void citire()
{int i,j;
fin>>n>>m;
fin.get();
for(i=0;i<n;i++)
  {fin.get(a[i],101);
  fin.get();
  }
for(i=0;i<n;i++)
 for(j=0;j<m;j++)
   if(a[i][j]=='R') rom[i][j]=1;
     else if(a[i][j]=='J') jul[i][j]=1;
}

/*void afisare()
{int i,j;
for(i=0;i<n;i++)
  {for(j=0;j<m;j++)
     fout<<rom[i][j]<<" ";
  fout<<'\n';
  }
fout<<'\n';
for(i=0;i<n;i++)
  {for(j=0;j<m;j++)
     fout<<jul[i][j]<<" ";
  fout<<'\n';
  }
fout<<'\n';
}   */

void lee()
{int gata=0,ii,jj,i,j,k;
int pas=1,min;
min=MAXINT;
while(!gata)
 {gata=1;
 for(i=0;i<n;i++)
     for(j=0;j<m;j++)
       {if(rom[i][j]==pas)
	  for(k=0;k<8;k++)
	     {ii=i+l[k];
	     jj=j+c[k];
	     if(ii>=0 && ii<n && jj>=0 && jj<n)
	       if(a[ii][jj]==' ' && rom[ii][jj]==0)
		 {rom[ii][jj]=pas+1;gata=0;}
	     }

       if(jul[i][j]==pas)
	   for(k=0;k<8;k++)
	     {ii=i+l[k];
	     jj=j+c[k];
	     if(ii>=0 && ii<n && jj>=0 && jj<n)
	       if(a[ii][jj]==' ' && jul[ii][jj]==0)
		 {jul[ii][jj]=pas+1;gata=0;}
	     }
      }
 pas++;
 for(i=1;i<=n;i++)
  for(j=1;j<=m;j++)
    if(rom[i][j]!=0 && rom[i][j]==jul[i][j]) //{afisare();gata=1;break;}

					     if(rom[i][j]<min)
						 {min=rom[i][j];
						  x=i;y=j;gata=1;
						  }
 }
fout<<min<<" "<<x+1<<" "<<y+1;
}

int main()
{citire();
lee();
fin.close();
fout.close();
return 0;
}