Cod sursa(job #272680)

Utilizator PopaStefanPopa Stefan PopaStefan Data 7 martie 2009 17:36:57
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.61 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;   
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 lee()   
{int gata=0,ii,jj,i,j,k,x,y;   
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<m)
           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<m)
           if(a[ii][jj]==' ' && jul[ii][jj]==0)   
         {jul[ii][jj]=pas+1;gata=0;}   
         }   
      }   
 pas++;   
 }   
for(i=0;i<n;i++)   
  for(j=0;j<m;j++)   
    if(rom[i][j]!=0 && rom[i][j]==jul[i][j] && jul[i][j]!=0)
			 if(rom[i][j]<min)
			 {min=rom[i][j];
			  x=i;y=j;
			  }
			     else if(rom[i][j]==min && j<=y)
				     {min=rom[i][j];
				     x=i;y=j;
				     }
fout<<min<<" "<<x+1<<" "<<y+1;   
}   
  
int main()   
{citire();   
lee();   
fin.close();   
fout.close();   
return 0;   
}