Cod sursa(job #2195202)

Utilizator MaraForinaMaria Florina MaraForina Data 15 aprilie 2018 16:42:08
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <iostream>
#include <cstdio>
#include <cstring>
#include <fstream>

using namespace std;

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

int a[103][103],b[103][103],n,m,xr,yr,xj,yj;

int dx[]={-1,-1,-1,0,0,1,1,1};
int dy[]={-1,0,1,-1,1,-1,0,1};

struct coord{int x,y;}c[1001];

void citire()
{
    fin>>n>>m;
    int i,j;
    char c,p;
    fin.get(c);
    for(i=1;i<=n;++i)
    {
        j=0;
        do
        {
            ++j;
            fin.get(c);
            if(c=='R') {xr=i;yr=j;}
            else if(c=='J') {xj=i;yj=j;}
                else if(c=='X') {a[i][j]=-1;b[i][j]=-1;}
        }while(c!='\n');
    }
}

int interior(int x,int y)
{
    return (x>=1&&x<=n&&y>=1&&y<=m);
}

void lee(int a[][103], int x, int y)
{
    int p,u,i,xv,yv;
    p=u=1;
    c[u].x=x;
    c[u].y=y;
    a[x][y]=1;
    while(p<=u)
    {
        x=c[p].x;
        y=c[p++].y;
        for(i=0;i<=7;++i)
        {
            xv=x+dx[i];
            yv=y+dy[i];
            if(interior(xv,yv)&&a[xv][yv]==0)
            {
                a[xv][yv]=a[x][y]+1;
                c[++u].x=xv;
                c[u].y=yv;
            }
        }
    }
}

int main()
{
    citire();
    int i,j,Min=1003,px=0,py=0;
    lee(a,xr,yr);
    lee(b,xj,yj);
    for(i=1;i<=n;++i)
        for(j=1;j<=m;++j)
           if(a[i][j]==b[i][j]&&a[i][j]<Min&&a[i][j]>1)
           {
               Min=a[i][j];
               px=i;
               py=j;
           }
    fout<<Min<<' '<<px<<' '<<py;
    return 0;
}