Cod sursa(job #1143616)

Utilizator hasmasandragosHasmasan Dragos hasmasandragos Data 15 martie 2014 19:21:19
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.72 kb
#include <fstream>
#include <string.h>

using namespace std;
int romeo[102][102],julieta[102][102];
char linie[105];
int main()
{int x1,y1,x,y,i,j,ur,uj,pr,pj,n,m,xr,xj,yr,yj,smin=9999,xf,yf;
 struct poz {int l,c;};
 int dl[8]={-1,-1,-1,0,1,1,1,0}, dc[8]={-1,0,1,1,1,0,-1,-1};
 poz coadar[10000],coadaj[10000];
 ifstream f("rj.in");
 ofstream g("rj.out");
 f>>n>>m;
 for (j=0;j<=m+1;j++)
 {romeo[0][j]=-1;
  julieta[0][j]=-1;
 }
 for (i=0;i<=n+1;i++)
  {romeo[i][0]=-1;
   julieta[i][0]=-1;
  }
  for (i=0;i<=n+1;i++)
  {romeo[i][m+1]=-1;
   julieta[i][m+1]=-1;
  }
  for (j=0;j<=m+1;j++)
  {romeo[n+1][j]=-1;
   julieta[n+1][j]=-1;
  }
 for (i=0;i<=n;i++)
  {f.getline(linie,103);
   for (j=0;j<m;j++)
    {if (*(linie+j)=='X')
      {romeo[i][j+1]=-1;
       julieta[i][j+1]=-1;
      }
     if (*(linie+j)=='R')
      {xr=i;
       yr=j+1;
      }
     if (*(linie+j)=='J')
      {xj=i;
       yj=j+1;
      }
    }
  }
  romeo[xr][yr]=1;
  julieta[xj][yj]=1;
  coadar[0].l=xr; coadar[0].c=yr;
  coadaj[0].l=xj; coadaj[0].c=yj;
  pr=0;ur=0;pj=0;uj=0;
  while (pr<=ur || pj<=uj)
 {x=coadar[pr].l; y=coadar[pr].c;
  pr++;
  for (i=0;i<8;i++)
  {x1=x+dl[i]; y1=y+dc[i];
   if (romeo[x1][y1]==0)
   {romeo[x1][y1]=romeo[x][y]+1;
    ur++;
    coadar[ur].l=x1; coadar[ur].c=y1;
   }
  }
   x=coadaj[pj].l; y=coadaj[pj].c;
  pj++;
  for (i=0;i<8;i++)
  {x1=x+dl[i]; y1=y+dc[i];
   if (julieta[x1][y1]==0)
   {julieta[x1][y1]=julieta[x][y]+1;
    uj++;
    coadaj[uj].l=x1; coadaj[uj].c=y1;
   }
  }
 }
  for (i=1;i<=n;i++)
   for (j=1;j<=m;j++)
    if (romeo[i][j]==julieta[i][j] && romeo[i][j]>0)
     {g<<i<<" "<<j<<" "<<romeo[i][j];
      i=n+1;
      j=m+1;
     }
    return 0;
}