Cod sursa(job #1896124)

Utilizator Mihai07Anghel Mihai Mihai07 Data 28 februarie 2017 14:22:56
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.85 kb
#include <iostream>
#include <fstream>

struct punct{int x;int y;};
using namespace std;

void lee(int i,int j,int b[105][105])
{ punct C[105];
  int p,u,lin,col;
  p=1;u=1;
  C[p].x=i;
  C[p].y=j;
  b[i][j]=1;
                                                              ///aplicam lee pentru toate directiile
   while(p<=u){
    //adaugam in coada vecinii lui
        lin=C[p].x;
        col=C[p].y;
      if(b[lin-1][col]==0){
         u++;
        C[u].x=lin-1;
        C[u].y=col;
        b[lin-1][col]=b[lin][col]+1;
      }
      if(b[lin-1][col-1]==0){
         u++;
        C[u].x=lin-1;
        C[u].y=col-1;
        b[lin-1][col-1]=b[lin][col]+1;
      }
       if(b[lin][col+1]==0){
         u++;
        C[u].x=lin;
        C[u].y=col+1;
        b[lin][col+1]=b[lin][col]+1;
      }
       if(b[lin+1][col+1]==0){
         u++;
        C[u].x=lin+1;
        C[u].y=col+1;
        b[lin+1][col+1]=b[lin][col]+1;
      }
       if(b[lin+1][col]==0){
         u++;
        C[u].x=lin+1;
        C[u].y=col;
        b[lin+1][col]=b[lin][col]+1;
      }
      if(b[lin+1][col+1]==0){
         u++;
        C[u].x=lin+1;
        C[u].y=col+1;
        b[lin+1][col+1]=b[lin][col]+1;
      }
      if(b[lin][col-1]==0){
         u++;
        C[u].x=lin;
        C[u].y=col-1;
        b[lin][col-1]=b[lin][col]+1;
      }
      if(b[lin-1][col-1]==0){
         u++;
        C[u].x=lin-1;
        C[u].y=col-1;
        b[lin-1][col-1]=b[lin][col]+1;
      }
      p++;

   }

}
int main()
{ char a[105][105];
int i,j,m,n,i2,j2,i3,j3,b[105][105]={-2},c[105][105]={-2};
   ifstream f("rj.in");
   ofstream g("rj.out");
   f>>n>>m;
   i=0;
   j=0;
  f.get();

  for(i=1;i<=n+1;i++){            /// nu se initializa b,c cu -2 in declarare asa ca am pus -2 aici
    for(j=1;j<=m+1;j++){
      f.get(a[i][j]);
      b[i][j]=-2;
      c[i][j]=-2;
    }}

  /* for(i=1;i<n+1;i++){
    for(j=1;j<=m+1;j++){
        cout<<a[i][j];
     }
    }
*/

  for(i=1;i<n+1;i++){
    for(j=1;j<m+1;j++){
     if(a[i][j]=='R'){             ///pun zero in locurile prin care se poate parcurge
      i2=i;
      j2=j;
      b[i][j]=0;
      c[i][j]=0;
     }
     if(a[i][j]=='J'){
      i3=i;
      j3=j;
     b[i][j]=0;
     c[i][j]=0;
     }
     if(a[i][j]==' '){
        b[i][j]=0;
        c[i][j]=0;
     }
    }

  }

 lee(i2,j2,b);
 /*for(i=1;i<n+1;i++){
    for(j=1;j<m+1;j++){
        cout<<b[i][j]<<" ";
     }cout<<endl;
    }*/
 lee(i3,j3,c);
 /*cout<<endl;
 for(i=1;i<n+1;i++){
    for(j=1;j<m+1;j++){
        cout<<c[i][j]<<" ";
     }cout<<endl;
    }
    */
    int dism;
 for(i=1;i<n+1;i++)
    for(j=1;j<m+1;j++)
       if(b[i][j]==c[i][j] && b[i][j]!=-2 && b[i][j]!=0){
          dism=c[i][j];
          i2=i;
          j2=j;
       }
 g<<dism<<' '<<i2<<' '<<j2;
    return 0;
}