Cod sursa(job #1375162)

Utilizator mihaiilieMihai Ilie mihaiilie Data 5 martie 2015 12:26:24
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.52 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
int m,n,i,j,xr,yr,xj,yj,dy[100],dx[100],p,u,x[8],y[8],mi;
char a[100][100],aj[100][100],ar[100][100];
bool gasit=false;
void citire()
{
    f>>m>>n;
    f.get();
    for(i=1;i<=m;i++)
    {
        for(j=1;j<=n;j++)
        {
            a[i][j]=f.get();
            if(a[i][j]=='j')
            {
                xj=i;
                yj=j;
            }
            if(a[i][j]=='r')
            {
                xr=i;
                yr=j;
            }
        }
        f.get();
    }
    for(j=0;j<=n+1;j++)
    {
        a[0][j]='x';
        a[m+1][j]='x';
    }
    for(i=1;i<=m;i++)
    {
        a[i][0]='x';
        a[i][n+1]='x';
    }
    for(i=0;i<=m+1;i++)
        for(j=0;j<=n+1;j++)
        {
            if(a[i][j]=='j')
              ar[i][j]=' ';
               else
                 ar[i][j]=a[i][j];
            if(a[i][j]=='r')
              aj[i][j]=' ';
               else
                 aj[i][j]=a[i][j];
        }
}
void afisare()
{
    for(i=0;i<=m+1;i++)
    {
       for(j=0;j<=n+1;j++)
        cout<<aj[i][j];
       cout<<endl;
    }
}
void R()
{
    x[0]=0;x[1]=1;x[2]=1;x[3]=1;x[4]=0;x[5]=-1;x[6]=-1;x[7]=-1;
    y[0]=-1;y[1]=-1;y[2]=0;y[3]=1;y[4]=1;y[5]=1;y[6]=0;y[7]=-1;
    p=1;u=1;
    dx[p]=xr;
    dy[p]=yr;
    p=0;
    ar[xr][yr]='1';
    while(p<=u)
    {
        p++;
        for(i=0;i<=7;i++)
        if(ar[dx[p]+x[i]][dy[p]+y[i]]==' ')
        {
            u++;
            dx[u]=dx[p]+x[i];
            dy[u]=dy[p]+y[i];
            ar[dx[u]][dy[u]]=ar[dx[p]][dy[p]]+1;
        }
    }
}
void J()
{
    x[0]=0;x[1]=1;x[2]=1;x[3]=1;x[4]=0;x[5]=-1;x[6]=-1;x[7]=-1;
    y[0]=-1;y[1]=-1;y[2]=0;y[3]=1;y[4]=1;y[5]=1;y[6]=0;y[7]=-1;
    p=1;u=1;
    dx[p]=xj;
    dy[p]=yj;
    p=0;
    aj[xj][yj]='1';
    while(p<=u)
    {
        p++;
        for(i=0;i<=7;i++)
        if(aj[dx[p]+x[i]][dy[p]+y[i]]==' ')
        {
            u++;
            dx[u]=dx[p]+x[i];
            dy[u]=dy[p]+y[i];
            aj[dx[u]][dy[u]]=aj[dx[p]][dy[p]]+1;
        }
    }
}
void verificare()
{
    mi=10000;
    for(i=1;i<=m;i++)
       for(j=1;j<=n;j++)
          if(ar[i][j]==aj[i][j]&&mi>aj[i][j])
          {
             mi=ar[i][j]-'0';
             xr=i;
             yr=j;
          }
    g<<xr<<" "<<yr<<" "<<mi;

}
int main()
{
    citire();
    R();
    J();
    verificare();
}