Cod sursa(job #2798815)

Utilizator ClaudiualbuAlbu Claudiu-Valentin Claudiualbu Data 11 noiembrie 2021 22:03:55
Problema Rj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.28 kb
#include <fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int a[110][110],b[110][110];
struct el
{
    int lin,col;
};
el ro[110*110];
el ju[110*110];
el dir[8]= {{-1,-1},{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1}};
int main()
{
    int i,j,n,m,prim=1,ultim=1,x,y,nou_x,nou_y,minim=100000,lm=0,cm=0;
    char x5;
    fin>>n>>m;
    fin.get();
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=m; j++)
        {
            fin.get(x5);
            if(x5=='X') a[i][j]=b[i][j]=-1;
            else if(x5=='R')
            {
                a[i][j]=b[i][j]=1;
                ro[prim].lin=i;
                ro[prim].col=j;
            }
            else if(x5=='J')
            {
                a[i][j]=b[i][j]=1;
                ju[prim].lin=i;
                ju[prim].col=j;
            }
            else if(x5==' ') a[i][j]=b[i][j]=0;
        }
        fin.get();
    }
    for(i=0; i<=n+1; i++)
        a[i][0]=a[i][m+1]=b[i][0]=b[i][m+1]=-1;
    for(i=0; i<=m+1; i++)
        a[0][i]=a[n+1][i]=b[0][i]=b[n+1][i]=-1;
    while(prim<=ultim)
    {
        x=ro[prim].lin;
        y=ro[prim].col;
        for(i=0; i<=7; i++)
        {
            nou_x=x+dir[i].lin;
            nou_y=y+dir[i].col;
            if(a[nou_x][nou_y]==0)
            {
                ultim++;
                ro[ultim].lin=nou_x;
                ro[ultim].col=nou_y;
                a[nou_x][nou_y]=a[x][y]+1;
            }
        }
        prim++;
    }
    prim=ultim=1;
    while(prim<=ultim)
    {
        x=ju[prim].lin;
        y=ju[prim].col;
        for(i=0; i<=7; i++)
        {
            nou_x=x+dir[i].lin;
            nou_y=y+dir[i].col;
            if(b[nou_x][nou_y]==0)
            {
                ultim++;
                ju[ultim].lin=nou_x;
                ju[ultim].col=nou_y;
                b[nou_x][nou_y]=b[x][y]+1;
            }
        }
        prim++;
    }
    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
            if(a[i][j]==b[i][j] && a[i][j]<minim && a[i][j]!=-1 && a[i][j]!=1 &&a[i][j]!=0)
            {
                minim=a[i][j];
                lm=i;
                cm=j;
            }
    fout<<minim<<" "<<lm<<" "<<cm;
    fin.close();
    fout.close();
    return 0;
}