Cod sursa(job #111165)

Utilizator me_andyAvramescu Andrei me_andy Data 28 noiembrie 2007 19:35:09
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.56 kb
#include<stdio.h>

 FILE *f=fopen("rj.in","r");
 FILE *g=fopen("rj.out","w");
 int a[101][101],b[101][101],i,j,r1,r2,j1,j2,n,m;
 char x[110];
void lee(int a[101][101],int q,int w)
{
 int contor=1;
 int  ok=1;
 a[q][w]=1;
 while(ok==1)
 {
 ok=0;
  for(int i=1;i<=n;i++)
   for(int j=1;j<=m;j++)
   {
   if(a[i][j]==contor)
   {
    if(a[i+1][j]==0)
    {
     a[i+1][j]=contor+1;
     ok=1;
    }

    if(a[i][j+1]==0)
    {
     a[i][j+1]=contor+1;
     ok=1;
    }

    if(a[i-1][j]==0)
    {
     a[i-1][j]=contor+1;
     ok=1;
    }

    if(a[i][j-1]==0)
    {
     a[i][j-1]=contor+1;
     ok=1;
    }

    if(a[i-1][j-1]==0)
    {
     a[i-1][j-1]=contor+1;
     ok=1;
    }

    if(a[i+1][j+1]==0)
    {
     a[i+1][j+1]=contor+1;
     ok=1;
    }

    if(a[i+1][j-1]==0)
    {
     a[i+1][j-1]=contor+1;
     ok=1;
    }

    if(a[i-1][j+1]==0)
    {
     a[i+1][j+1]=contor+1;
     ok=1;
    }
   }
  }
  contor++;
 }
}
int main()
{
 int ok1=1;
 fscanf(f,"%d",&n);
 fscanf(f,"%d",&m);
 fgets(x,m+1,f);
 for(i=1;i<=n;i++)
 {
  fgets(x,120,f);
  for(j=0;j<m;j++)
  {
   if(x[j]=='X')
   {
    a[i][j+1]=-1;
    b[i][j+1]=-1;
   }
   if(x[j]=='R')
     {
      r1=i;
      r2=j+1;
     }
   if(x[j]=='J')
   {
    j1=i;
     j2=j+1;
   }
  }
 }
 lee(a,r1,r2);
 lee(b,j1,j2);
 for(i=1;i<=n;i++)
 {
 for(j=1;j<=m;j++)
   if(a[i][j]==b[i][j] && a[i][j]>0)
   {
    fprintf(g,"%d %d %d",a[i][j],i,j);
    ok1=1;
    break;
   }
   if(ok1==1)
    break;
 }
 fcloseall();
 return 0;
}