Cod sursa(job #2176097)

Utilizator BogdanT01Bogdan Tailup BogdanT01 Data 16 martie 2018 20:53:36
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.91 kb
#include <iostream>
#include <fstream>
using namespace std;
const int dx[]={-1,-1,0,1,1,1,0,-1};
const int dy[]={0,1,1,1,0,-1,-1,-1};
ofstream out("rj.out");
#define Nmax 100
 int n,m,a[Nmax][Nmax],b[Nmax][Nmax],xi,yi,xf,yf,im,jm,minn;
void citire()
{       ifstream in("rj.in");
    char x[101];
     in>>n>>m;
    in.get();
    for(int i=0;i<n;i++)
    {
        in.getline(x,101,'\n');
        for(int j=0;j<m;j++)
        {
            a[i][j]=0;
            b[i][j]=0;
            if(x[j]=='X')
                {
                    a[i][j]=1;
                    b[i][j]=1;
                }

            if(x[j]=='R')
            {
                xi=i;
                yi=j;
            }
            if(x[j]=='J')
            {
                xf=i;
                yf=j;

            }
        }
    }

}
int bun(int i, int j,int n, int m)
{
    return(i>=0 and i<n and j>=0 and j<m);
}
void lee(int n,int m, int a[][100],int xi, int yi)
{
    int k,ii,jj,v[10000],y[10000],pi,ps;
    v[0]=xi;
    y[0]=yi;
    pi=0;
    ps=0;
    a[xi][yi]=1;
    while(pi<=ps)
    {
        for(k=0;k<8;k++)
        {
            ii=v[pi]+dx[k];
            jj=y[pi]+dy[k];
            if(bun(ii,jj,n,m))
            if(a[ii][jj]==0)
            {
                a[ii][jj]=a[v[pi]][y[pi]]+1;
                ps++;
                v[ps]=ii;
                y[ps]=jj;
            }
        }
        pi++;
    }
}
int main()
{
    int i,j;
   citire();
    lee(n,m,a,xi,yi);
    lee(n,m,b,xf,yf);
    minn=100*100;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
            if((a[i][j]==b[i][j])and (a[i][j]>1))
            {
                if(a[i][j]<minn)
                {
                    minn=a[i][j];
                    im=i;
                    jm=j;
                }

            }

    }
    out<<minn<<" "<<im+1<<" "<<jm+1;


    return 0;
}