Cod sursa(job #135235)

Utilizator catalina5catalina serban catalina5 Data 13 februarie 2008 12:57:12
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.7 kb
#include <fstream.h>
#include <string.h>
char a[105][105];
int b[105][105],c[105][105],nr,xr,yr,xj,yj,n,m;
const int vi[8]={-1,-1,-1,0,0,1,1,1};
const int vj[8]={-1,0,1,-1,1,-1,0,1};
ifstream fin ("rj.in");
ofstream fout("rj.out");
void citire()
{
    fin>>n>>m;
    for (int i=0;i<=n+1;i++)
    {
	a[0][i]='X';
	a[m+1][i]='X';
    }

    for (int i=0;i<=m+1;i++)
    {
	a[i][0]='X';
	a[i][n+1]='X';
    }
    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 matrice(int m[105][105],int x,int y) {
    int rx[10000],ry[10000];
    rx[0]=x;
    ry[0]=y;
    m[y][x]=1;
    nr=1;
    for (int i=0;i<nr;i++)
	for (int k=0;k<8;k++)
	       if (a[rx[i]+vi[k]][ry[i]+vj[k]]==' '&&m[rx[i]+vi[k]][ry[i]+vj[k]]==0)
	       {
		     rx[nr]=rx[i]+vi[k];
		     ry[nr]=ry[i]+vj[k];
		     m[rx[nr]][ry[nr]]=m[rx[i]][ry[i]]+1;
		     nr++;
	       }
}   
void minim (){
    long min=1000003,xmin=0,ymin=0;
    for (int i=1;i<=n;i++)   
        for (int y=1;y<=m;y++)   
	    if (b[i][y]==c[i][y])
		if (b[i][y]<min && b[i][y]!=0)
                {   
		    min=b[i][y];
                    xmin=i;   
                    ymin=y;   
                }   
    fout<<min<<" "<<xmin<<" "<<ymin<<"\n";   
}   
  
int main()   
{   
    citire();   
    matrice(b,xr,yr);
    matrice(c,xj,yj);
    minim();   
    fin.close();   
    fout.close();   
    return 0;   
}