Cod sursa(job #1655675)

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

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

    p=a[l][co]/2;
    fout<<p<<" ";
    a[ir][jr]=0;
    fil1(ir,jr,ij,jj);

    return 0;
}