Cod sursa(job #153295)

Utilizator catalina5catalina serban catalina5 Data 10 martie 2008 13:08:28
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.74 kb
#include<fstream.h>
int r[102][102],f[102][102],n,xj,yj,xr,yr,m;
char a[102][102];
const int x[8]={-1,-1,-1,0,1,1,1,0};
const int y[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<=n+1;i++){
		a[0][i]='X';
		a[n+1][i]='X';
		}

	for(int i=0;i<=m+1;i++){
		a[i][0]='X';
		a[i][m+1]='X';
		}
}
void lee(int b[102][102],int xb,int yb){
	int x1[10000],y1[10000],nr=1;
	x1[0]=xb;
	y1[0]=yb;
	b[xb][yb]=1;
	for(int i=0;i<nr;i++)
		for(int j=0;j<8;j++)
			if(b[x1[i]+x[j]][y1[i]+y[j]]==0&&a[x1[i]+x[j]][y1[i]+y[j]]!='X'){
				b[x1[i]+x[j]][y1[i]+y[j]]=b[x1[i]][y1[i]]+1;
				x1[nr]=x1[i]+x[j];
				y1[nr]=y1[i]+y[j];
				nr++;
			}
}
void minim(){
	int min=10005,minl=10005,minc=10005;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			if(r[i][j]==f[i][j]&&r[i][j]!=0){
				if(r[i][j]<min){
					min=r[i][j];
					minl=i;
					minc=j;
				}
				if(r[i][j]==min&&minl>i){
					minl=i;
					minc=j;
				}
				if(r[i][j]==min&&minl==i&&minc>j){
					minl=i;
					minc=j;
				}
			}
	fout<<min<<" "<<minl<<" "<<minc<<'\n';
}
void afisare(){
	lee(f,xj,yj);
	lee(r,xr,yr);
	minim();
}
int main(){
	citire();
	bordare();
	afisare();
	fin.close();
	fout.close();
	return 0;
}