Cod sursa(job #272656)

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

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

char a[120][120];
int rom[110][110];
int jul[110][110];
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()
{char c;
int i,j,g;
fin>>n>>m;
fin.get(c);
for(i=0;i<n;i++)
  {g=0;
  for(j=0;j<m;j++)
     {fin.get(c);
     if(c!='\n') a[i][j]=c;
       else while(j<m)
	       {a[i][j]=' ';
	       j++;g=1;
	       }
     }
  if(g==0) fin.get(c);
  }
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';
for(i=0;i<n;i++)
  {for(j=0;j<m;j++)
     fout<<a[i][j];
  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<=7;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<=7;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])
					     if(rom[i][j]<min)
						 {min=rom[i][j];
						  x=i;y=j;gata=1;
						  }
					      else if(rom[i][j]==min)
						 if(j<y) {min=rom[i][j];
							 x=i;y=j;gata=1;
							 }
//afisare();
fout<<min<<" "<<x+1<<" "<<y+1;
}

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