Cod sursa(job #2112057)

Utilizator vladstanciuVlad Stanciu vladstanciu Data 22 ianuarie 2018 22:03:33
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.56 kb
#include <fstream>
#include <cstring>

using namespace std;

ifstream in("rj.in");
ofstream out("rj.out");

const int dl[]={-1,0,1,0,-1,-1,1,1};
const int dc[]={0,1,0,-1,-1,1,1,-1};
const int N=100;
char v[N][N];
int r[N][N];
int J[N][N];
struct cord
{
    int l;
    int c;
};
cord q[N*N];

int main()
{
    int n,m,i,j,st=0,dr=-1;
    cord rom,jul,x,y;
    in>>n>>m;
    for(i=1 ; i<=n ; i++)
    {
        in.getline(1+v[i],m);
        for(j=1 ; j<=m ; j++)
        {
            if(v[i][j]==' ')
            {
                r[i][j]=-2;
                J[i][j]=-2;
            }
            else if(v[i][j]=='X')
            {
                r[i][j]=-1;
                J[i][j]=-1;
            }
            else if(v[i][j]=='R')
            {
                r[i][j]=-3;
                J[i][j]=-4;
                rom.l=i;
                rom.c=j;
            }
            else if(v[i][j]=='J')
            {
                r[i][j]=-1;
                J[i][j]=-1;
                jul.l=i;
                jul.c=j;
            }
        }
    }
    q[0]=rom;
    for(i=1 ; i<=n ; i++)
    {
        for(j=1 ; j<=m ; j++)
        {
            out<<v[i][j]<<" ";
        }
        out<<endl;
    }
    out<<"\n";
    while(st<=dr)
    {
        x=q[st++];
        for(i=0 ; i<8 ; ++i)
        {
            y.l=x.l+dl[i];
            y.c=x.c+dc[i];
            if(r[y.l][y.c]==-2)
            {
                q[++dr]=y;
                r[y.l][y.c]=r[x.l][x.c]+1;
            }
        }
    }
    return 0;
}