Cod sursa(job #2288556)

Utilizator razvanboabesrazvan boabes razvanboabes Data 23 noiembrie 2018 17:09:21
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.97 kb
#include <fstream>

using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
const int nmax=105;
struct coada {
    int x,y;
};
int dx[]= {-1,-1,0,1,1,1,0,-1};
int dy[]= {0,1,1,1,0,-1,-1,-1};
int mat[nmax][nmax];
void lee(int xo,int yo,int a[nmax][nmax]) {
    int p,u,i;
    coada temp,f,v[nmax*nmax+1];
    p=u=1;
    temp.x=xo;
    temp.y=yo;
    v[p]=temp;
    a[temp.x][temp.y]=1;
    while(p<=u) {
        f=v[p];
        p++;
        for(i=0; i<8; i++) {
            temp.x=f.x+dx[i];
            temp.y=f.y+dy[i];
            if(a[temp.x][temp.y]==0) {
                a[temp.x][temp.y]=a[f.x][f.y]+1;
                v[++u]=temp;
            }
        }
    }
}
int main() {
    int n,m,i,j;
    in>>n>>m;
    char cit;
    int xr,yr,xj,yj;
    in.get();
    for(i=1; i<=n; i++) {
        for(j=1; j<=m; j++) {
            cit=in.get();
            if(cit=='X')
                mat[i][j]=-1;
            else if(cit=='R') {
                 xr=i;
                yr=j;
            } else if(cit=='J') {
                xj=i;
                yj=j;
            }
        }
        in.get();
    }
    int R[nmax][nmax],J[nmax][nmax];
    for(i=0; i<=n+1; i++)
        R[i][0]=R[i][m+1]=J[i][0]=J[i][m+1]=-1;
    for(i=0; i<=m+1; i++)
        R[0][i]=R[n+1][i]=J[0][i]=J[n+1][i]=-1;
                  for(i=1; i<=n; i++)
                  for(j=1; j<=m; j++){
                    if(mat[i][j]==-1)
                  R[i][j]=J[i][j]=-1;
                  else R[i][j]=J[i][j]=0;
                  }
                 lee(xr,yr,R);
                  lee(xj,yj,J);
                int vmin=1000000,pozy,pozx;
            for(i=1;i<=n;i++)
            for(j=1;j<=m;j++){
                if(R[i][j]==J[i][j] and R[i][j]<vmin){  
                    vmin=R[i][j];
                    pozx=i;
                    pozy=j;
                }
            }
           out<<vmin<<" "<<pozx<<" "<<pozy;
                  return 0;
    }