Cod sursa(job #2283006)

Utilizator CandyBucherGaube Robert Gabriel CandyBucher Data 14 noiembrie 2018 20:54:15
Problema Rj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.96 kb
#include<iostream>
#include<fstream>
using namespace std;
    long n,m,i,j,in=0,sf=0,xc[10002],yc[10002],x,y,xj,yj,pmin=10002;
    int rom[101][101],jul[101][101],dl[]={-1,-1,-1,0,1,1,1,0},dc[]={-1,0,1,1,1,0,-1,-1};
    char s;
int main(){
    ifstream f("rj.in");
    ofstream o("rj.out");
    f>>n>>m;
    f.get(s);
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++){
            f.get(s);
            if(s==' '){
                rom[i][j]=0;
                jul[i][j]=0;
            }
            else if(s=='R'){
                rom[i][j]=1;
                x=i;
                y=j;
            }
            else if(s=='J'){
                jul[i][j]=1;
                xj=i;
                yj=j;
            }
            else{
                rom[i][j]=-1;
                jul[i][j]=-1;
            }
        }
        f.get(s);
    }
    for(i=0;i<=n+1;i++)
        for(j=0;j<=m+1;j++)
            if(i==0||j==0||i==n+1||j==m+1){
                rom[i][j]=-1;
                jul[i][j]=-1;
            }
    xc[0]=x;
    yc[0]=y;
    while(in<=sf){
        for(i=0;i<8;i++){
            x=xc[in]+dl[i];
            y=yc[in]+dc[i];
            if(!rom[x][y]){
                rom[x][y]=rom[xc[in]][yc[in]]+1;
                sf++;
                xc[sf]=x;
                yc[sf]=y;
            }
        }
        in++;
    }
    in=0;
    sf=0;
    xc[0]=xj;
    yc[0]=yj;
    while(in<=sf){
        for(i=0;i<8;i++){
            x=xc[in]+dl[i];
            y=yc[in]+dc[i];
            if(!jul[x][y]){
                jul[x][y]=jul[xc[in]][yc[in]]+1;
                sf++;
                xc[sf]=x;
                yc[sf]=y;
            }
        }
        in++;
    }
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        if(rom[i][j]==jul[i][j]&&rom[i][j]<pmin&&rom[i][j]>0){
            pmin=rom[i][j];
            x=i;
            y=j;
        }
    o<<pmin<<" "<<x<<" "<<y<<" ";
    f.close();
    o.close();
}