Cod sursa(job #2175417)

Utilizator BogdanT01Bogdan Tailup BogdanT01 Data 16 martie 2018 17:04:47
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.05 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};
#define Nmax 100
ofstream out("rj.out");
int n,m,a[Nmax][Nmax],xi,yi,xf,yf,b[Nmax][Nmax];
void citire()
{   char x[100];
    ifstream in("rj.in");
    in>>n>>m;
    in.get();
    for(int i=0;i<n;i++)
    {
        in.getline(x,101,'\n');
        for(int j=0;j<m;j++)
          {
            if(a[i][j]=='X')
            {
                a[i][j]=1;
                b[i][j]=1;
            }
            if(a[i][j]=='R')
            {
                xi=i;
                yi=j;
            }
            if(a[i][j]=='J')
            {
                xf=i;
                yf=j;
            }
          }
    }
in.close();
}
int bune(int i,int j)
{
    return (i>=0 and j>=0 and i<n and j<m);
}
void afisare()
{
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
            out<<a[i][j]<<" ";
            out<<endl;
    }
    out<<endl;

}
void lee(int n,int m,int a[][Nmax],int txi,int tyi)
{
    int pi,ps,v[10000],y[10000],ii,jj;
    v[0]=txi;
    y[0]=tyi;
    pi=0;
    ps=0;
    a[txi][tyi]=0;
    while(pi<=ps)
    {
        for(int k=0;k<8;k++)
        {
            ii=v[pi]+dx[k];
            jj=y[pi]+dy[k];
            if(bune(ii,jj))
            {
                if(a[ii][jj]==0)
                {
                    a[ii][jj]=a[v[pi]][y[pi]]+1;
                    ps++;
                    v[ps]=ii;
                    y[ps]=jj;
                }
            }
        }
        pi++;
    }
}


int main()
{
    citire();
    int minn,i,j,im,ym;
    minn=100*100;
    lee(n,m,a,xi,yi);
    lee(n,m,b,xf,yf);
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        if(a[i][j]>1 and b[i][j]==a[i][j])
        {
            if(a[i][j]<minn)
            {
                minn=a[i][j];
            im=i;
            ym=j;
            }
        }
    }

    out<<minn<<" "<<im+1<<" "<<ym+1<<" ";
    out.close();
    return 0;
}