Cod sursa(job #2568124)

Utilizator maraboneaMara Bonea marabonea Data 3 martie 2020 21:01:16
Problema Rj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.63 kb

#include <fstream>
#include <iostream>
#include <cstdio>

using namespace std;

ifstream fin("rj.in");

ofstream fout("rj.out");



int n, m, i, j, a[110][110], is1, js1, is2, js2, sol, isol, jsol;

int rom[110][110], juli[110][110], c[2][10010];

int p, u, ic, jc, iv, jv, d;

char ch[110];

int di[8]={1, 1, 1, 0, 0, -1, -1, -1};

int dj[8]={1, 0, -1, 1, -1, 1, 0, -1};





int main(){

    fin>>n>>m;

    sol=1000000000;

    fin.get();

    for(i=1; i<=n; i++){

        fin.getline(ch, 105);

        for(j=0; j<m; j++){

            if(ch[j]=='X'){

                a[i][j+1]=-1;

            }

            if(ch[j]=='R'){

                is1=i;

                js1=j+1;

            }

            if(ch[j]=='J'){

                is2=i;

                js2=j+1;

            }

        }

    }

    p=1;

    u=1;

    c[0][1]=is1;

    c[1][1]=js1;

    rom[is1][js1]=1;

    while(p<=u){

        ic=c[0][p];

        jc=c[1][p];

        for(d=0; d<8; d++){

            iv=ic+di[d];

            jv=jc+dj[d];

            if(rom[iv][jv]==0 && a[iv][jv]!=-1 && iv>0 && iv<=n && jv>0 && jv<=m){

                rom[iv][jv]=rom[ic][jc]+1;

                u++;

                c[0][u]=iv;

                c[1][u]=jv;

            }

        }

        p++;

    }
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            cout<<rom[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    p=1;

    u=1;

    c[0][1]=is2;

    c[1][1]=js2;

    juli[is2][js2]=1;

    while(p<=u){

        ic=c[0][p];

        jc=c[1][p];

        for(d=0; d<8; d++){

            iv=ic+di[d];

            jv=jc+dj[d];

            if(juli[iv][jv]==0 && a[iv][jv]!=-1 && iv>0 && iv<=n && jv>0 && jv<=m){

                juli[iv][jv]=juli[ic][jc]+1;

                u++;

                c[0][u]=iv;

                c[1][u]=jv;

            }

        }

        p++;

    }
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            cout<<juli[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    for(i=1; i<=n; i++){

        for(j=1; j<=m; j++){

            if(a[i][j]!=-1 && juli[i][j]>0 && rom[i][j]>0 && rom[i][j]==juli[i][j]){

                if(rom[i][j]<sol || ((rom[i][j]==sol&&i<isol)||(rom[i][j]==sol && i==isol && j<jsol)) ){

                    sol=rom[i][j];

                    isol=i;

                    jsol=j;

                }

            }

        }

    }

    fout<<sol<<" "<<isol<<" "<<jsol;

}