Cod sursa(job #908142)

Utilizator mcip1977Muresan Ciprian mcip1977 Data 8 martie 2013 19:46:19
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.49 kb
#include <fstream>
using namespace std;
ifstream is("rj.in");
ofstream os("rj.out");
const int di[]={-1,-1,-1,0,0,1,1,1};
const int dj[]={-1,0,1,-1,1,-1,0,1};
int n,m,a[101][101];
int inside(int i, int j)
{
    return i>=1 && j>=1 && i<=n && j<=m;
}

int main()
{
    int i,j,ir,jr,ij,jj,inou,jnou,pas;
    char c[101];
    is>>n>>m;
    is.get();
    for(i=1;i<=n;i++)
            {
                is.getline(c,101);
                for(j=0;j<m;j++)
                {
                if(c[j]==' ') a[i][j+1]=0;
                else if(c[j]=='X') a[i][j+1]=-1;
                else if(c[j]=='R') {ir=i; jr=j+1;}
                else if(c[j]=='J') {ij=i; jj=j+1; a[i][j+1]=0;}
                }
            }
    a[ir][jr]=1;
    pas=1;
    do
    {
        for(i=1;i<=n;i++)
            for(j=1;j<=m;j++)
                if(a[i][j]==pas)
                   for (int d=0;d<8;d++)
                   {
                       inou=i+di[d];
                       jnou=j+dj[d];
                       if(inside(inou,jnou))
                            if(a[inou][jnou]==0)
                               a[inou][jnou]=pas+1;
                   }
        pas++;
    }
    while(a[ij][jj]==0);
    pas=(a[ij][jj]+1)/2;
    int x=0,y=0;
    for(i=1;i<=n;i++)
            for(j=1;j<=m;j++)
               if(a[i][j]==pas && x==0)
               {
                   x=i; y=j;
               }
    os<<pas<<" "<<x<<" "<<y;
    is.close();
    os.close();
    return 0;
}