Cod sursa(job #504798)

Utilizator myshuSpatariu Mihai-Constantin myshu Data 28 noiembrie 2010 18:54:10
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include<fstream.h>
int xx[9]={0,-1,-1,-1,0,0,1,1,1},yy[9]={0,-1,0,1,-1,1,-1,0,1},a[102][102],b[102][102];
int main ()
{
	FILE *f=fopen("rj.in","r");
	ofstream fcout("rj.out");
	int n,m,i,j,ci[10000],cj[10000],xj,yj,p,u,p2,u2,ci2[10000],cj2[10000],xr,yr,min=101;
	char x;
	fscanf(f,"%d",&n);fscanf(f,"%d",&m);
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			{fscanf(f,"%c",&x);
			 if(x==' '){a[i][j]=-2;b[i][j]=-2;}
			 else if(x=='X'){a[i][j]=-1;b[i][j]=-1;}
			 else if(x=='R'){ci[1]=i;cj[1]=j;a[i][j]=1;xr=i;yr=j;b[i][j]=-2;}
			 else if(x=='J'){xj=i;yj=j;b[i][j]=1;ci2[1]=i;cj2[1]=j;a[i][j]=-2;}
			 else if(x=='\n')j--;}
	p=1;u=1;p2=1;u2=1;
		while(p<=u&&p2<=u2)
			{if((ci[p]==xj&&cj[p]==yj)||(ci2[p2]==xr&&cj2[p2]==yr))break;
			for(i=1;i<=8;i++)
				{if(a[ci[p]+xx[i]][cj[p]+yy[i]]==-2){a[ci[p]+xx[i]][cj[p]+yy[i]]=a[ci[p]][cj[p]]+1;ci[++u]=ci[p]+xx[i];cj[u]=cj[p]+yy[i];}}
			for(i=1;i<=8;i++)
				{if(b[ci2[p2]+xx[i]][cj2[p2]+yy[i]]==-2){b[ci2[p2]+xx[i]][cj2[p2]+yy[i]]=b[ci2[p2]][cj2[p2]]+1;ci2[++u2]=ci2[p2]+xx[i];cj2[u2]=cj2[p2]+yy[i];}}
			p++;p2++;}
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			if(a[i][j]==b[i][j]&&a[i][j]>0&&a[i][j]<min){min=a[i][j];xj=i;yj=j;}
	fcout<<min<<' '<<xj<<' '<<yj<<'\n';
	return 0;
}