Cod sursa(job #546591)

Utilizator lucian666Vasilut Lucian lucian666 Data 5 martie 2011 10:05:55
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include<cstdio>
using namespace std;
int const di[]={-1,-1,0,1,1, 1, 0,-1};
int const dj[]={ 0, 1,1,1,0,-1,-1,-1};
int n,m,x,y,tmin,i,j,ii,jj;
int a[105][105],b[105][105];
char ci[105],cj[105];
void lee (int aa[105][105])
{

    int st=1,dr=1;
    while(st<=dr){
        for(int k=0;k<8;++k){
        int ii=ci[st]+di[k],jj=cj[st]+dj[k];
        if(aa[ii][jj]==0&&ii>0&&ii<=n&&jj<=m&&jj>0){
            aa[ii][jj]=aa[ci[st]][cj[st]]+1;
            ++dr;
            ci[dr]=ii;
            cj[dr]=jj;
        }
        }
        ++st;
    }

}
        
    
int main()
{
		freopen("rj.in","r",stdin);
		freopen("rj.out","w",stdout);
	scanf("%d %d",&n,&m);
char yo;
scanf("%c",&yo);
for(i=1;i<=n;i++)
{
	for(j=1;j<=m;j++)
	{
		scanf("%c",&yo);
		if(yo=='X')
			
				a[i][j]=-1,b[i][j]=-1;
				
			
			
				if(yo=='J')
				
					a[i][j]=1,ci[1]=i,cj[1]=j;
					
					
				
					if(yo=='R')
				
                b[i][j]=1,x=i,y=j;
				
					
	}
	while(yo!='\n'&&i<n)
		scanf("%c",&yo);
}
	lee (a);
    ci[1]=x,cj[1]=y;
    lee (b);
    int min=1<<30;;
    for(int i=1;i<=n;++i)
    for(int j=1;j<=m;++j)
    if(a[i][j]==b[i][j]&&a[i][j]<min&&a[i][j]>0){
    min=a[i][j];
    x=i;
    y=j;
	}
printf("%d %d %d",min,x,y);
	return 0;
			}