Cod sursa(job #515671)

Utilizator RuxyRezidentTMRuxandra P RuxyRezidentTM Data 22 decembrie 2010 01:18:19
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.53 kb
#include<fstream>
#include<string>
using namespace std;


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

void creare(char a[120][120], int n, int m, int x, int y)
{ int i,j,sw=1,Dx[]={-1,-1,-1,0,0,1,1,1},Dy[]={-1,0,1,-1,1,-1,0,1},t;
  char k='1';
  for(i=0;i<8;i++)
	if(a[x+Dx[i]][y+Dy[i]]==' ') a[x+Dx[i]][y+Dy[i]]='1';
  while(sw)
   { sw=0;
	 for(i=0;i<n;i++)
	  for(j=0;j<m;j++)
		if(a[i][j]==k) 
		  { sw=1;
			 for(t=0;t<8;t++)
				if(a[i+Dx[t]][j+Dy[t]]==' ')  a[i+Dx[t]][j+Dy[t]]=k+1;
		  }
	  k++;
   }
}

int main()
{ int n,m,i,xr,yr,xj,yj,x,y,min=300,t,j;
  char sir[200],*p,a[120][120],b[120][120];
  //citire
  f>>n>>m; f.get();
  for(i=0;i<n;i++)
	{ 
	   f.getline(sir,200);
	   strcpy(a[i],sir);
	   strcpy(b[i],sir);
	   p=strchr(sir,'R');
	   if(p) { xr=i; yr=p-sir; }
	   p=NULL;
	   p=strchr(sir,'J');
	   if(p) if(p) { xj=i; yj=p-sir; }
	   p=NULL;
  }
  
  creare(a,n,m,xr,yr);
  creare(b,n,m,xj,yj);
  /*while(sw)
   { sw=0;
	 for(i=0;i<n;i++)
	  for(j=0;j<m;j++)
		if(a[i][j]==k) 
		  { sw=1;
			for(t=0;t<8;t++)
			 if(a[i+Dx[t]][j+Dy[t]]==(k+1)) {  x=i+Dx[t]; y=j+Dy[t]; sw=0;}
			if(sw) for(t=0;t<8;t++)
			         if(a[i+Dx[t]][j+Dy[t]]==' ')  a[i+Dx[t]][j+Dy[t]]=k+1;
			   
		  }
	  k++;
   } */
//  g<<x+1<<' '<<y+1<<' '<<a[x][y];
  for(i=0;i<n;i++)
	for(j=0;j<m;j++)
		 if(a[i][j]==b[i][j]&&a[i][j]!='X'&&a[i][j]!=' '&&a[i][j]!='R'&&a[i][j]!='J') 
		 { t=a[i][j]-'1';
		   if(t<min) { min=t; x=i+1; y=j+1; } 
		 }
  g<<min+2<<' '<<x<<' '<<y;
  return 0;
		   
}