Cod sursa(job #1418954)

Utilizator conradCondrea Radu conrad Data 14 aprilie 2015 14:34:10
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.63 kb
#include<fstream>
#include<cstring>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int i,j,n,m,rx,ry,jx,jy,q[102][102],o,p,w[102][102],r;
char a[100];
void afisare(int e[102][102]){
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++)
            g<<e[i][j]<<" ";
        g<<'\n';
    }
}
void citire(){
    f.get();
    for(i=1;i<=n;i++){
        f.get(a,100);
        for(j=0;j<m;j++)
            if(a[j]=='X'){
                q[i][j+1]=1;
                w[i][j+1]=1;
            }
            else{
                q[i][j+1]=r;
                w[i][j+1]=r;
                if(a[j]=='R'){
                    rx=i;
                    ry=j+1;
                }
                if(a[j]=='J'){
                    jx=i;
                    jy=j+1;
                }
            }
        f.get();
    }
}
void lee(int e[102][102],int x,int y,int k){
   if(x>1 && e[x-1][y]>k+1){
      e[x-1][y]=k+1;
      lee(e,x-1,y,k+1);
   }
   if(x<n && e[x+1][y]>k+1){
      e[x+1][y]=k+1;
      lee(e,x+1,y,k+1);
   }
   if(y>1 && e[x][y-1]>k+1){
      e[x][y-1]=k+1;
      lee(e,x,y-1,k+1);
   }
   if(y<m && e[x][y+1]>k+1){
      e[x][y+1]=k+1;
      lee(e,x,y+1,k+1);
   }
}
int cautare(){
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            if(q[i][j]==w[i][j] && q[i][j]!=1 && q[i][j]!=r){
                g<<i<<" "<<j<<" "<<q[i][j]-2;
                return 0;
            }
    return 0;
}
int main(){
    f>>n>>m;
    r=n*m;
    citire();
    q[rx][ry]=2;
    lee(q,rx,ry,2);
    w[jx][jy]=2;
    lee(w,jx,jy,2);
    cautare();
    f.close();
    g.close();
    return 0;
}