Pagini recente » Cod sursa (job #2838998) | Cod sursa (job #1343765) | Cod sursa (job #1504663) | Cod sursa (job #262819) | Cod sursa (job #1375188)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.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<<mi<<" "<<xr<<" "<<yr;
}
int main()
{
citire();
R();
J();
verificare();
}