Cod sursa(job #2951901)

Utilizator Theo20067Cismaru Theodor-Alexe Theo20067 Data 7 decembrie 2022 20:12:51
Problema Rj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.87 kb
#include <fstream>
using namespace std;
ifstream fin ("rj.in");
ofstream fout("rj.out");
int xi[8]={0,1,0,-1,-1,1,-1,1};
int xj[8]={1,0,-1,0,-1,1,1,-1};
char S[102][102],s;
struct elem
{
    int z1,z2;
} C[10005],k;
int n,m,V[102][102],R[102][102],i,sol,xmin,ymin,x1,y1,x2,y2,j;
void lee(int x, int y, int a[102][102])
{

    int st=0,dr=0,i,j;
    for(i=0;i<=n+1;i++)
        for(j=0;j<=m+1;j++)
            a[i][j]=-1;
    C[0].z1=x;
    C[0].z2=y;
    a[x][y]=1;
    while(st<=dr)
    {
         k=C[st];
         st++;
         for(i=0;i<8;i++)
            if(S[k.z1+xi[i]][k.z2+xj[i]]==' '&&a[k.z1+xi[i]][k.z2+xj[i]]==-1)
            {
                a[k.z1+xi[i]][k.z2+xj[i]]=1+a[k.z1][k.z2];
                C[++dr].z1=k.z1+xi[i];
                C[dr].z2=k.z2+xj[i];
            }
    }
}
int main()
{
    fin>>n>>m;
    for(i=0;i<=n+1;i++)
        S[i][0]=S[i][m+1]='X';
    for(i=0;i<=m+1;i++)
        S[0][i]=S[n+1][i]='X';
    fin.get(s);
    for(i=1;i<=n;i++)
        {
            for(j=1;j<=m;j++)
            {
                fin.get(s);
                S[i][j]=s;
                if(S[i][j]=='R')
                {
                    x1=i;
                    y1=j;
                    S[i][j]=' ';
                }
                if(S[i][j]=='J')
                {
                    x2=i;
                    y2=j;
                    S[i][j]=' ';
                }
            }
            fin.get(s);
        }
    lee(x1,y1,V);
    lee(x2,y2,R);
    sol=102*102+5;
    xmin=-1;
    ymin=-1;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            if(V[i][j]==R[i][j])
                if(V[i][j]<sol&&V[i][j]!=-1)
                {
                    sol=V[i][j];
                    xmin=i;
                    ymin=j;
                }

    fout<<sol<<' '<<xmin<<' '<<ymin<<"\n";
    return 0;
}