Cod sursa(job #1655689)

Utilizator razvanlgu31Razvan Lungu razvanlgu31 Data 18 martie 2016 10:54:27
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.5 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int a[110][110],b[110][110],i,j,n,m,ir,jr,ij,jj;
char v[110],c;
void fil(int l1,int c1,int l2,int c2)
{
    if(l1==l2 && c1==c2)
        {
            return;
        }
    else
    {
        if(a[l1+1][c1]==0)
        {
            a[l1+1][c1]=a[l1][c1]+1;
            fil(l1+1,c1,l2,c2);
        }
        if(a[l1-1][c1]==0)
        {
            a[l1-1][c1]=a[l1][c1]+1;
            fil(l1-1,c1,l2,c2);
        }
        if(a[l1][c1+1]==0)
        {
            a[l1][c1+1]=a[l1][c1]+1;
            fil(l1,c1+1,l2,c2);
        }
        if(a[l1][c1-1]==0)
        {
            a[l1][c1-1]=a[l1][c1]+1;
            fil(l1,c1-1,l2,c2);
        }



    }
}
void fil1(int l1,int c1,int l2,int c2)
{
    if(l1==l2 && c1==c2)
        {
            return;
        }
    else
    {
        if(b[l2+1][c2]==0)
        {
            b[l2+1][c2]=b[l2][c2]+1;
            fil1(l1,c1,l2+1,c2);
        }
        if(b[l2-1][c2]==0)
        {
            b[l2-1][c2]=b[l2][c2]+1;
            fil1(l1,c1,l2-1,c2);
        }
        if(b[l2][c2+1]==0)
        {
            b[l2][c2+1]=b[l2][c2]+1;
            fil1(l1,c1,l2,c2+1);
        }
        if(b[l2][c2-1]==0)
        {
            b[l2][c2-1]=b[l2][c2]+1;
            fil1(l1,c1,l2,c2-1);
        }
    }
}
int main()
{
    fin>>n>>m;
    fin.getline(v,100);
    for(i=1;i<=n;i++)
    {
        fin.getline(v,100);
        for(j=0;j<strlen(v);j++)
        {
        c=v[j];
        if(c=='X')
            a[i][j+1]=-1;
            else
                a[i][j+1]=0;
            if(c=='R')
            {
                ir=i;
                jr=j+1;
            }
            if(c=='J')
            {
                ij=i;
                jj=j+1;
            }
            b[i][j+1]=a[i][j+1];
        }

    }
    for(i=1;i<=m;i++)
    {
        a[0][i]=-1;
        a[n+1][i]=-1;
        b[0][i]=-1;
        b[n+1][i]=-1;
    }
    for(i=1;i<=n;i++)
    {
        a[i][0]=-1;
        a[i][m+1]=-1;
        b[i][0]=-1;
        b[i][m+1]=-1;
    }
    a[ir][jr]=1;
    b[ij][jj]=1;
    fil(ir,jr,ij,jj);
    fil1(ir,jr,ij,jj);

    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            if(a[i][j]==b[i][j] && a[i][j]>0)
            {
                fout<<a[i][j]-1<<" "<<i<<" "<<j;
                return 0;
            }
        }
    }
    return 0;
}