Cod sursa(job #135188)

Utilizator catalina5catalina serban catalina5 Data 13 februarie 2008 11:59:12
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.77 kb

#include<iostream.h>   
#include<fstream.h>   
char a[5][5];   
int b[5][5],c[5][5],n,m,nr,xj,yj,xr,yr;   
const int vi[8]={-1,-1,-1,0,1,1,1,0};   
const int vj[8]={-1,0,1,1,1,0,-1,-1};   
ifstream fin("RJ.in");   
ofstream fout("RJ.out");   
void citire(){   
    fin>>n>>m;   
     char c[105];   
    fin.getline (c,105);      
        for (int i=1;i<=n;i++)      
        {      
              fin.getline (c,105);      
          for (int j=0;j<m;j++)   
          {   
          a[i][j+1]=c[j];   
          if (c[j]=='R')   
          {   
	      xr=i;
	      yr=j+1;
	      a[i][j+1]=' ';
	  }
	  else
	      if (c[j]=='J')
	      {
	      xj=i;
	      yj=j+1;
	      a[i][j+1]=' ';
	      }
          }   
    }   
    }   
void bordare(){   
    for(int i=0;i<=m;i++){   
    a[0][i]=-3;   
    a[m][i]=-3;   
    }
    for(i=0;i<=n;i++){
    a[i][0]=-3;
    a[i][n]=-3;
    }
}
void lee (int x,int y,int d[5][5]) {
    int r[10000],ji[10000];
	r[0]=x;
	ji[0]=y;
	a[x][y]=' ';
	nr=1;
	for(int k=0;k<nr;k++) {
	    for(int j=0;j<8;j++)
	    if(d[r[k]+vi[j]][ji[k]+vj[j]]==0&&a[r[k]+vi[j]][ji[k]+vj[j]]==' ') {
		d[r[k]+vi[j]][ji[k]+vj[j]]=d[r[k]][ji[k]]+1;
		r[nr]=r[k]+vi[j];
		ji[nr]=r[k]+vj[j];
		nr++;
		}
		}
}
void afisare (int e[5][5]) {
for(int i=1;i<n;i++) {
    for(int j=1;j<m;j++)
    if(a[i][j]!=' ')
	cout<<"X";
    else
    cout<<e[i][j];
    cout<<endl;
}
}
void main() {
citire();
n++;
m++;
b[xr][yr]=1;
c[xj][yj]=1;
bordare();
lee(xr,yr,b);
lee(xj,yj,c);
afisare(c);
int pi,pj,min=1000000;
for(int i=1;i<n;i++)
    for(int j=1;j<n;j++)
    if(c[i][j]==b[i][j]&&a[i][j]>-1)
	if(min>a[i][j]){
	   min=a[i][j];
	   pi=i;
	   pj=j; }
cout<<endl;
fout<<min<<" "<<pi<<" "<<pj;
fout.close();
}