Cod sursa(job #350345)

Utilizator Cristy94Buleandra Cristian Cristy94 Data 23 septembrie 2009 16:06:06
Problema Rj Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.51 kb
#include<fstream.h>
ifstream f("rj.in");
ofstream g("rj.out");
int p,u,t,v[10001][10001],n,m,r[101][101],l[101][101],i,j,x,y,dy[8]={0,1,1,1,0,-1,-1,-1},dx[8]={-1,-1,0,1,1,1,0,-1},x1,y1;
char c;
int main(){
f>>n>>m;
//citirea matricei
for(i=1;i<=n;i++){
      f.get();
for(j=1;j<=m;j++){
     c=f.get();
     if(c=='X'){
       l[i][j]=r[i][j]=1;
             }
     else if(c=='R'){x1=i;
		    y1=j;r[x1][y1]=-1;
		 }
	  else if(c=='J')
		 { x=i;
	   y=j;l[x][y]=-1; } } }
//traseul lui Romeo
p=1;u=1; v[0][1]=x1;
		 v[1][1]=y1;
while(p<=u){
	 for(i=0;i<=7;i++){
	    if(v[0][p]+dx[i]<=m&&v[0][p]+dx[i]>=1&&v[1][p]+dy[i]<=m&&v[1][p]+dy[i]>=1&&r[v[0][p]+dx[i]][v[1][p]+dy[i]]==0)
		   {  r[v[0][p]+dx[i]][v[1][p]+dy[i]]=r[v[0][p]][v[1][p]]-1;
                       u++;
                       v[0][u]=v[0][p]+dx[i];
	         v[1][u]=v[1][p]+dy[i];
                  }

	}
p++;
}

//traseul Julietei
v[0][1]=x;
v[1][1]=y;
p=1;u=1;
while(p<=u){
	 for(i=0;i<=7;i++){
	    if(v[0][p]+dx[i]<=m&&v[0][p]+dx[i]>=1&&v[1][p]+dy[i]<=m&&v[1][p]+dy[i]>=1&&l[v[0][p]+dx[i]][v[1][p]+dy[i]]==0)
		   {  l[v[0][p]+dx[i]][v[1][p]+dy[i]]=l[v[0][p]][v[1][p]]-1;
		       u++;
		       v[0][u]=v[0][p]+dx[i];
		 v[1][u]=v[1][p]+dy[i];
		  }

	}
p++;
}
//vedem locul unde s-au intalnit
t=20000;
for(i=1;i<=n;i++)
  for(j=1;j<=m;j++)
     if(r[i][j]<0&&r[i][j]==l[i][j]&&-r[i][j]<t)
           { t=-r[i][j];
             x=i;
             y=j;}
g<<t<<" "<<x<<" "<<y;
return 0;
}