Cod sursa(job #1637183)

Utilizator puzzleFlutur Vasile puzzle Data 7 martie 2016 15:43:24
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.08 kb
#include <fstream>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
int bine(int ii, int jj,int n, int m)
{
    return(ii>=0 and ii<n and jj>=0 and jj<m);
}
void lee(int n,int m, int mat[][100],int xi, int yi)
{
    int k,ii,jj,cx[10000],cy[10000],pi,ps;
    cx[0]=xi;
    cy[0]=yi;
    pi=0;
    ps=0;
    int dx[]={1,0,-1,0,-1,-1,1,1};
    int dy[]={0,1,0,-1,-1,1,-1,1};
    mat[xi][yi]=1;
    while(pi<=ps)
    {
        for(k=0;k<8;k++)
        {
            ii=cx[pi]+dx[k];
            jj=cy[pi]+dy[k];
            if(bine(ii,jj,n,m)==1)/// daca folosesc bordare scap de aceasta functie
            if(mat[ii][jj]==0)
            {
                mat[ii][jj]=mat[cx[pi]][cy[pi]]+1;///programare dinamica(P.D)
                ps++;
                cx[ps]=ii;
                cy[ps]=jj;
            }
        }
        pi++;
    }
}
int main()
{
    int n,m,mat[100][100],matt[100][100],xi,yi,xf,yf,i,j,ir,jr,minn;
    char x[101];
    in>>n>>m;
    in.get();
    for(i=0;i<n;i++)
    {
        in.getline(x,101,'\n');
        for(j=0;j<m;j++)
        {
            mat[i][j]=0;
            matt[i][j]=0;
            if(x[j]=='X')
                {
                    mat[i][j]=1;
                    matt[i][j]=1;
                }

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

            }
        }
    }



    lee(n,m,mat,xi,yi);
    lee(n,m,matt,xf,yf);
    /*for(i=0;i<n;i++)
        {
            for(j=0;j<m;j++)
            out<<matt[i][j]<<" ";
            out<<'\n';
        }*/
    minn=100*100;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
            if((mat[i][j]==matt[i][j])&&(mat[i][j]>1))
            {
                if(mat[i][j]<minn)
                {
                    minn=mat[i][j];
                    ir=i;
                    jr=j;
                }

            }

    }
    out<<minn<<" "<<ir+1<<" "<<jr+1;


    return 0;
}