Cod sursa(job #135157)

Utilizator catalina5catalina serban catalina5 Data 13 februarie 2008 10:48:47
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.71 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;
			  xj=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 copie () {
for(int i=0;i<=n;i++)
	for(int j=0;j<=m;j++)
	    b[i][j]=a[i][j];
}
void lee (int x,int y,int d[5][5]) {
	int r[10000],ji[10000];
		r[0]=x;
		ji[0]=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=0;i<=n;i++) {
    for(int j=0;j<=m;j++)
	cout<<e[i][j]<<" ";
    cout<<endl;
}
}
void main() {
citire();
n++;
m++;
//afisare(a);
bordare();
//copie();
lee(xr,yr,b);
lee(xj,yj,c);
//afisare(a);
//cout<<endl;
afisare(b);
int pi,pj,min=1000000;
for(int i=1;i<n;i++)
    for(int j=1;j<n;j++)
	if(a[i][j]==b[i][j]&&a[i][j]>-1)
		if(min>a[i][j]){
		   min=a[i][j];
		   pi=i;
		   pj=j; }
fout<<min<<" "<<pi<<" "<<pj;
fout.close();
}