Cod sursa(job #219075)

Utilizator Bogdan_tmmTirca Bogdan Bogdan_tmm Data 5 noiembrie 2008 07:23:25
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.91 kb
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
int main()
{       clrscr();
 f=fopen("rj.in","r");
 g=fopen("rj.out","w");
 int n,m,i,j,k,d[103][103],d1[103][103],rx,ry,jy,jx;
 fscanf(f,"%d %d\n",&m,&n);
 char a[103][103],c;
 for(i=1;i<=m;i++)
 {
  for(j=1;j<=n;j++)
  {
    fscanf(f,"%c",&c);
    if(c==' ') a[i][j]='0';
    else
     if(c=='X') a[i][j]='1';
     else
      if(c=='R') { a[i][j]='2';rx=i;ry=j;}
      else
       if(c=='J') {a[i][j]='3';jx=i;jy=j;}
    d[i][j]=d1[i][j]=0;
  }
  fscanf(f,"%c",&c);
 }
 for(i=0;i<=m+1;i++)
  a[i][0]=a[i][n+1]='1';
 for(j=0;j<=n+1;j++)
  a[0][j]=a[m+1][j]='1';

  //lee
 int dx[]={1,1,1,-1,-1,-1,0,0},dy[]={1,0,-1,1,-1,0,1,-1},x,cx,cy;
 k=1;   int t=1,t1=1,x1,y1,nr1,nr=1;
 d[rx][ry]=d1[jx][jy]=k;
 do
 {
  t=0;  nr++;
  for(i=1;i<=m;i++)
   for(j=1;j<=n;j++)
   {
    if(d[i][j]==k)
    {
     for(x=0;x<8;x++)
     {
      cx=i+dx[x];
      cy=j+dy[x];
      if(a[cx][cy]!='1'&&d[cx][cy]==0&&d1[cx][cy]==0)
      {
       t=1;
       d[cx][cy]=k+1; a[cx][cy]='2';
      }
     }
    }
   }
   for(i=1;i<=m;i++)
    for(j=1;j<=n;j++)
    {
     if(d1[i][j]==k)
     {
      for(x=0;x<8;x++)
      {
       cx=i+dx[x];
       cy=j+dy[x];
       if(a[cx][cy]!='1'&&d1[cx][cy]==0&&d[cx][cy]==k+1&&t1)
       {
	nr1=nr;x1=cx;y1=cy;t1=0;
       }
       if(a[cx][cy]!='1'&&d1[cx][cy]==0&&d[cx][cy]==0)
       {
	t=1;
	d1[cx][cy]=k+1; a[cx][cy]='3';
       }
      }
     }
    }
   if(t) k++;
  }
 while(t&&t1);
  fprintf(g,"%d %d %d\n",nr1,x1,y1);
  for(i=1;i<=m;i++)
  {
   for(j=1;j<=n;j++)
    fprintf(g,"%c",a[i][j]);
    fprintf(g,"\n");
  }
  fprintf(g,"\n");
  for(i=1;i<=m;i++)
  {
   for(j=1;j<=n;j++)
    fprintf(g,"%d",d[i][j]);
   fprintf(g,"\n");
  }
  fprintf(g,"\n");
  for(i=1;i<=m;i++)
  {
   for(j=1;j<=n;j++)
    fprintf(g,"%d",d1[i][j]);
   fprintf(g,"\n");
  }return 0;
 }