Cod sursa(job #342160)

Utilizator giuliastefGiulia Stef giuliastef Data 20 august 2009 18:29:51
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.99 kb
// rj

#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
int a[101][101],m,n,maxim,rxi,ryi,jxi,jyi,rjx,rjy;
void harta(int ha[101][101], int xi, int yi)
{
    int x,y,xn,yn,k,i,j,bec,l[10000],c[10000];
    int dx[]={-1,0,1,0,1,1,-1,-1};
    int dy[]={0,-1,0,1,1,-1,1,-1};
    ha[xi][yi]=1;
    l[0]=xi, c[0]=yi;
    k=1;
    bec=0;
    for(i=1;i<=k||!bec;i++)
    {
     x=l[i-1]; y=c[i-1]; bec=1;
     for(j=0;j<8;j++)
     {
                     xn=x+dx[j];
                     yn=y+dy[j];        
                     if(a[xn][yn]==0&&ha[xn][yn]==0)
                     {
                      bec=0;
                      ha[xn][yn]=ha[x][y]+1;
                      if(maxim<ha[xn][yn]) maxim=ha[xn][yn];
                      l[k]=xn;
                      c[k++]=yn;
                     }
     }
    }
}
int main()
{
    char c[101];
    int i,j;
    int ro[101][101],ju[101][101];
    ifstream f("rj.in");
    ofstream g("rj.out");
    f>>n>>m;
    f.getline(c,1);
    for(i=1;i<=n;i++)
    {
     f.getline(c,m+1);
     for(j=1;j<=m;j++)
     {
                      if(c[j-1]=='X') a[i][j]=-1;
                      if(c[j-1]=='R') rxi=i, ryi=j;
                      if(c[j-1]=='J') jxi=i, jyi=j;
                      ro[i][j]=0, ju[i][j]=0;
     
     }
    }
    for(i=0;i<=m;i++) // bordare
    {
                     a[0][i]=-1;
                     a[n+1][i]=-1;
    }
    for(i=0;i<=n;i++)
    {
                     a[i][0]=-1;
                     a[i][m+1]=-1;
    }
    harta (ro,rxi,ryi);
    harta (ju,jxi,jyi);
    maxim=10000;
    for(i=1;i<=n;i++)
     for(j=1;j<=m;j++)
      if(ro[i][j]==ju[i][j]&&ro[i][j]!=0&&ro[i][j]<maxim)
      {
                                      maxim=ro[i][j];
                                      rjx=i;
                                      rjy=j;
      }
    g<<ro[rjx][rjy]<<" "<<rjx<<" "<<rjy<<"\n";
    f.close();
    g.close();
    return 0;
}