Cod sursa(job #1477433)

Utilizator robx12lnLinca Robert robx12ln Data 26 august 2015 11:34:34
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2 kb
#include<fstream>
#include<cstring>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int c[2][103*103],r[103][103],J[103][103],i,j,n,m,x,y,p,u,ic,jc,jv,iv;
int minim;
short di[]={1,-1,0, 0, 1,-1,1,-1};
short dj[]={0, 0,1,-1,-1, 1,1,-1};
char a[103][103],s[104];
int main(){
    fin>>n>>m;
    for(i=1;i<=n;i++){
        fin.get();
        fin.get(s,104);
        j=strlen(s);
        while(j<m){
            s[j]=' ';
            j++;
        }
        for(j=1;j<=m;j++){
            a[i][j]=s[j-1];
            if(a[i][j]=='R'){
                c[0][1]=i;
                c[1][1]=j;
                r[i][j]=1;
            }
            if(a[i][j]=='J'){
                x=i;
                y=j;
                J[i][j]=1;
            }
        }
    }
    // r
    p=1;
    u=1;
    while(p<=u){
        ic=c[0][p];
        jc=c[1][p];
        for(int d=0;d<=7;d++){
            iv=ic+di[d];
            jv=jc+dj[d];
            if(a[iv][jv]!='X' && iv>=1 && iv<=n && jv>=1 && jv<=m && r[iv][jv]==0){
                u++;
                c[0][u]=iv;
                c[1][u]=jv;
                r[iv][jv]=r[ic][jc]+1;
            }
        }
        p++;
    }
    // J
    c[0][1]=x;
    c[1][1]=y;
    p=1;
    u=1;
    while(p<=u){
        ic=c[0][p];
        jc=c[1][p];
        for(int d=0;d<=7;d++){
            iv=ic+di[d];
            jv=jc+dj[d];
            if(a[iv][jv]!='X' && iv>=1 && iv<=n && jv>=1 && jv<=m && J[iv][jv]==0){
                u++;
                c[0][u]=iv;
                c[1][u]=jv;
                J[iv][jv]=J[ic][jc]+1;
            }
        }
        p++;
    }
    minim=2000000000;
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++){
            if(r[i][j]==J[i][j] && r[i][j]!=0){
                if(minim>r[i][j]){
                    minim=r[i][j];
                    x=i;
                    y=j;
                }
            }
        }
    }
    fout<<minim<<" "<<x<<" "<<y;
    return 0;
}